簡體   English   中英

MySQL加載數據infile保留不變的字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM