亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

帶有ON DUPLICATE KEY UPDATE的MySQL LOAD DATA INFILE

帶有ON DUPLICATE KEY UPDATE的MySQL LOAD DATA INFILE

寶慕林4294392 2019-08-27 13:43:33
帶有ON DUPLICATE KEY UPDATE的MySQL LOAD DATA INFILE為了將大量數據加載到MySQL中,LOAD DATA INFILE是迄今為止最快的選擇。不幸的是,雖然這可以以INSERT IGNORE或REPLACE的方式使用,但目前不支持ON DUPLICATE KEY UPDATE。但是,ON DUPLICATE KEY UPDATE有優勢REPLACE。當存在重復時,后者執行刪除和插入。這為密鑰管理帶來了開銷。此外,自動增量ID在替換時不會保持不變。ON DUPLICATE KEY UPDATE使用LOAD DATA INFILE時如何模擬?
查看完整描述

2 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

這些步驟可用于模擬此功能:

1)創建一個新的臨時表。

CREATE TEMPORARY TABLE temporary_table LIKE target_table;

2)(可選)從臨時表中刪除所有索引以加快速度。

SHOW INDEX FROM temporary_table;DROP INDEX `PRIMARY` ON temporary_table;DROP INDEX `some_other_index` ON temporary_table;

3)將CSV加載到臨時表中

LOAD DATA INFILE 'your_file.csv'INTO TABLE temporary_table
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'(field1, field2);

4)使用ON DUPLICATE KEY UPDATE復制數據

SHOW COLUMNS FROM target_table;INSERT INTO target_tableSELECT * FROM temporary_tableON DUPLICATE KEY UPDATE field1 = VALUES(field1), field2 = VALUES(field2);

5)刪除臨時表

DROP TEMPORARY TABLE temporary_table;

使用SHOW INDEX FROMSHOW COLUMNS FROM此過程可以針對任何給定的表自動執行。


查看完整回答
反對 回復 2019-08-27
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

我們可以在(Jan)共享的過程中用下面的單個查詢替換第一個(兩個步驟)。

1)和2)我們可以創建具有相同參考結構且沒有任何索引的新表。

CREATE TEMPORARY TABLE temporary_table SELECT * FROM target_table WHERE 1 = 0;

代替..

1)創建一個新的臨時表。

CREATE TEMPORARY TABLE temporary_table LIKE target_table;

2)(可選)從臨時表中刪除所有索引以加快速度。

顯示來自temporary_table的索引; DROP INDEX PRIMARYON temporary_table; DROP INDEX some_other_indexON temporary_table;


查看完整回答
反對 回復 2019-08-27
  • 2 回答
  • 0 關注
  • 672 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號