MYSQL LOAD DATA INFILE 忽略重复行(自动增量为主键)

标签 mysql csv load-data-infile

我在使用 LOAD DATA INFILE 命令时遇到了一些麻烦,因为我想忽略数据库中已有的行。假设我有一个包含如下数据的表,

id  |name   |age
--------------------
1   |aaaa   |22
2   |bbbb   |21
3   |bbaa   |20
4   |abbb   |22
5   |aacc   |22

其中 id 是自动递增值。我的 csv 文件包含如下数据,

"cccc","14"
"ssee","33"
"dddd","22"
"aaaa","22"
"abbb","22"
"dhgg","34"
"aacc","22"

我想忽略这些行,

    "aaaa","22"
    "abbb","22"
    "aacc","22"

并将其余部分上传到表中。我尚未将所有内容上传到表的查询如下,

    LOAD DATA INFILE 'member.csv'
    INTO TABLE tbl_member
    FIELDS TERMINATED BY ','
           ENCLOSED BY '"'
           ESCAPED BY '"'
           LINES TERMINATED BY '\n'
    (name, age);

请帮助我完成这项任务。我将不胜感激。我尝试了很多链接,但没有帮助:(

最佳答案

在年龄列上创建一个 UNIQUE 索引,然后:

LOAD DATA INFILE 'member.csv'
IGNORE INTO TABLE tbl_member
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
(name, age);

关于MYSQL LOAD DATA INFILE 忽略重复行(自动增量为主键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55946945/

相关文章:

php - 收集统计数据,例如网页的浏览量

Mysql + Nhibernate + MVC

python - 获取 CSV 读取器/写入器对象使用的文件对象

shell - 使用 gnu 并行处理带标题的 CSV 文件

mysql - 如果主键相同则替换行

mysql - 使用 MySQL 的 LOAD DATA INFILE 处理转义字段分隔符

php - mysql LIKE 双百分比

mysql - mysql 为每个客户返回一行

csv - 如何解析格式奇怪的数据文件?

MySQL加载命令: is there a wildcard available for the datafile?