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

标签 mysql load-data-infile

我正在谷歌搜索并阅读该网站上的帖子,但不清楚我应该如何插入唯一记录。

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

我需要导入的文本文件中没有 ID,我正在阅读的内容 insert ignore 看起来正在解决重复的 ID。我想为添加的任何新记录创建新 ID,但显然我不能重复。

理想情况下,这将通过加载数据 infile 来完成......但真的不确定:

插入忽略? 在重复 key 上?

最佳答案

实现所需内容的最简单方法是使用 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 INTO IGNOREnew_table 中的名称INSERT 到您已经存在的表中:

INSERT IGNORE INTO your_table_archive (name)
SELECT name
FROM new_table

MySQL 遇到的任何重复记录都不会被插入,而是保留原始记录。一旦你从中得到你需要的东西,你就可以删除 new_table

关于mysql - 仅使用唯一记录更新 MySQL 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31932856/

相关文章:

PHP - 使用 var_dump 时 SQL 查询返回 array(0) { }

php - 将已弃用的mysql_result更改为mysqli [duplicate]

Mysql加载数据: SET IF for all or given subset of columns?

php - LOAD DATA INFILE - mysql/php 脚本无法正常运行

php - 如何根据sql中的特定日期范围进行过滤

mysql - 使用列的平均值更新记录

mysql - Laravel-SQLSTATE[HY000] : General error: 2031

mysql - LOAD DATA LOCAL INFILE COMMAND 几个错误

mysql - 加载数据 INFILE - 绝望地卡住了

mysql - MySQL 导入文件超过 60 秒或分钟