[英]Mysql load data infile leaving unchanged fields
假設我有一個包含三個字段的MySQL表:key,value1,value2
我想從文件inserts.txt加載兩個字段(鍵,值1)的數據。 inserts.txt的內容:
1;2
3;4
有:
LOAD DATA LOCAL INFILE
"inserts.txt"
REPLACE
INTO TABLE
`test_insert_timestamp`
FIELDS TERMINATED BY ';'
但是在替換的情況下,我想保持value2不變。
我怎樣才能做到這一點?
REPLACE語句包含以下算法:
MySQL對REPLACE(和LOAD DATA ... REPLACE)使用以下算法:
嘗試將新行插入表中
雖然插入失敗是因為主鍵或唯一索引發生重復鍵錯誤:
從表中刪除具有重復鍵值的沖突行
再試一次將新行插入表中
( https://dev.mysql.com/doc/refman/5.7/en/replace.html )
因此,您無法保留將要刪除的行中的值。
您想要做的是模擬“ ON DUPLICATE KEY UPDATE”邏輯。
您不能在單個LOAD DATA查詢中執行此操作。 您要做的是先將數據加載到臨時表中,然后將INSERT從臨時表插入到目標表中,在此表中將可以使用“ ON DUPLICATE KEY UPDATE”功能。
整個過程在此問題的最高支持答案中有詳細介紹: MySQL LOAD DATA INFILE ON ON DUPLICATE KEY UPDATE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.