仅使用唯一记录更新MySQL表?

时间:2015-08-11 03:46:41

标签: mysql load-data-infile

我正在谷歌上搜索这个网站上的帖子,但不清楚我应该做什么去插入唯一的记录。

我基本上有一个巨大的文件,其中有一列数据需要导入到db表中,其中已存在来自我的文本文件的数千条记录。

我需要导入的文本文件中没有id,我正在读取插入忽略看起来要解决重复ID。我希望为添加的任何新记录创建新的ID,但显然我不能重复。

理想情况下,这可以通过加载数据infile来完成......但实际上并不确定:

插入IGNORE? ON Duplicate Key?

1 个答案:

答案 0 :(得分:2)

实现所需内容的最简单方法是使用LOAD DATA读取整个文件,然后将所有非重复项插入已存在的表中。

LOAD DATA LOCAL INFILE 'large_file.txt' INTO TABLE new_table
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n'
(name);

这假设您的巨型文件的第一行包含列标题。如果是,则可以将IGNORE 1 LINES添加到上面的语句中。

您现在可以使用INSERT new_tableINSERT INTO IGNORE中的名称添加到已存在的表中:

INSERT IGNORE INTO your_table_archive (name)
SELECT name
FROM new_table

MySQL遇到的任何重复记录都将插入,而原始的记录将被保留。一旦你有了你需要的东西,就可以放弃new_table