我有一個腳本,用於將數據從一個數據庫遷移到另一個數據庫。我已經使用常規的mysql插入和更新腳本完成了。它只是需要太長時間。如何使用LOAD DATA LOCAL INFILE REPLACE
在任何情況下,我已經把我想要在新數據庫中更新的所有數據轉儲到csv,我只是擔心如果我運行此腳本,我將獲得重複的條目。我沒有匹配的「id」,所以我無法對下面列出的REPLACE腳本進行比較。我想知道是否有人能夠提醒我這個劇本看起來是否正確。
目前我在新的數據庫中有數據行,我只是想用csv中的新數據覆蓋新數據庫中的任何字段(如果它們匹配的話)。 「archived_id_number」字段是我可以匹配的唯一字段,但它不是主鍵。
能有人拍我的以下內容:
我想如果在CSV的archived_id_number相匹配的是,在新的DB與在CSV的數據替換字段中的任何數據。如果沒有匹配,我想將數據作爲新行插入。
$sql = '
LOAD DATA LOCAL INFILE "'.$theFile.'"
REPLACE INTO TABLE Product
FIELDS TERMINATED BY "|"
LINES TERMINATED BY "\\n"
(archived_id_number, sku, name, upc, account_id, shippingBox_id, unit_cost, supplier_id, description, productLength, productWidth, productHeight)
;';
感謝您的幫助!
儘管這不是一個主鍵,我想有一個'UNIQUE'上'archived_id_number'? – Wrikken
是的,這是正確的,並且有一個獨特的sku – LargeTuna
然後它應該盡我所能地看到沒有原始表格構建&csv片段。我先在表格的測試副本上運行它,但是... – Wrikken