mysql - LOAD DATA LOCAL INFILE 跳过行而不发出警告

标签 mysql sql

我创建了下表:

CREATE TABLE table_name
(
primaryid INT PRIMARY KEY,
caseid INT,
pt varchar(80)
);

这是我的数据:

primaryid$caseid$pt
100640841$10064084$Pulmonary embolism
32990183$3299018$Pyrexia
32990183$3299018$Rash maculo-papular
32990183$3299018$Swelling face
35387833$3538783$Obesity
375988510$3759885$Gastric polyps
375988510$3759885$Gastritis atrophic

我使用以下语句将其加载到 MySQL 中:

LOAD DATA LOCAL INFILE '/path/to/file/input.txt' INTO TABLE table_name FIELDS TERMINATED BY '$' LINES TERMINATED BY '\n' IGNORE 1 LINES (primaryid, caseid,pt) ;

我得到的结果是:

Query OK, 171925 rows affected (2.75 sec)
Records: 545256  Deleted: 0  Skipped: 373331  Warnings: 0

有人可以告诉我哪里出错了吗? 为什么会跳过 373331 条记录并且没有警告?

这是语法问题还是数据文件问题,或者两者兼而有之?

最佳答案

您已将 primaryid 列定义为 PRIMARY KEY,这意味着它必须是唯一的。仅在您的示例记录中,就有三行将 32990183 用作 primaryid。仅加载其中一条记录,其余记录将被跳过。

您要么需要修复数据,要么不将 primaryid 设置为主键。

关于mysql - LOAD DATA LOCAL INFILE 跳过行而不发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27299553/

相关文章:

mysql - 当我使用 ORDER by 时,如何从表中获取没有重复的行?

php - 将 2 个选择查询连接到一个 php 变量中

sql - 从具有数百万条记录的表中删除

php - 如何只在 MySQL 结果中获取关联数组?

mysql - 为什么 MySQL 不使用我的 FULLTEXT 索引?

php - 尝试在 MySQL 语法中重复字符串,出现语法错误

mysql - 设置laravel Eloquent关系报错

Mysql在删除集null时创建具有多个外键的表

MySQL 更新列,其序列号按具有相同值的字段分组

mysql - 两个表之间的数据库消息系统