提问者:小点点

LOAD DATA INFILE将外键作为逗号读取


我正在尝试使用load data infile命令将数据加载到sql表中。 出于测试的目的,我的文件只有一行,但是将来它会有很多很多。 目前的内容是:

LOAD DATA INFILE 'c:/users/jgonz/documents/myproject/labtxt.csv' INTO TABLE labevents FIELDS
TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' ;

17871279;60669;86433;50819;“2149-11-09 19:42:00”;8.0;8.0;“nan”;“nans”

其中第二个数字60669是外键。 当使用Load DATA infile时,我会收到一条错误消息,指出外键约束失败,指向该列,但我知道该列指向的表中存在这样的id。 此外,如果我使用phpMyAdmin的UI上传相同的文件,则根本就存在问题。

为了查找问题,我运行命令show ENGINE INNODB status;,在latest FOREIGN KEY error中发现了以下内容

Foreign key constraint fails for table `openmrs`.`labevents`:
,
  CONSTRAINT `patient_id` FOREIGN KEY (`patient_id`) REFERENCES `patient` (`patient_id`) ON DELETE RESTRICT ON UPDATE RESTRICT

这是否意味着它正在以逗号(,)的形式读取外部id值? 如果是,如何? 为什么? 我该怎么修复它呢? 顺便说一下,我用的是Windows10


共1个答案

匿名用户

我觉得好笨,我才意识到问题所在

LOAD DATA INFILE 'c:/users/jgonz/documents/myproject/labtxt.csv' INTO TABLE labevents FIELDS
TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' ;

终止的by行应为“;” 而不是“,”