我正在谷歌上搜索这个网站上的帖子,但不清楚我应该做什么去插入唯一的记录。
我基本上有一个巨大的文件,其中有一列数据需要导入到db表中,其中已存在来自我的文本文件的数千条记录。
我需要导入的文本文件中没有id,我正在读取插入忽略看起来要解决重复ID。我希望为添加的任何新记录创建新的ID,但显然我不能重复。
理想情况下,这可以通过加载数据infile来完成......但实际上并不确定:
插入IGNORE? ON Duplicate Key?
答案 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_table
将INSERT INTO IGNORE
中的名称添加到已存在的表中:
INSERT IGNORE INTO your_table_archive (name)
SELECT name
FROM new_table
MySQL遇到的任何重复记录都将不插入,而原始的记录将被保留。一旦你有了你需要的东西,就可以放弃new_table
。