我已经创建了下表:

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,这意味着它必须是唯一的。仅在样本记录中,就有三行,其中32990183primaryid。这些记录中只有一个会被加载,其余的将被跳过。

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

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

10-13 22:15