我正在使用 MySQL 的 LOAD DATA INFILE 加载一个 CSV 文件,但只加载了一半的行。我测试了不同的文件,每次都会加载恰好一半的行。如何加载所有行?
这是 LOAD DATA INFILE SQL:
LOAD DATA INFILE
'C:\\Users\\user\\Dropbox\\wamp\\www\\jobdesc\\data\\banp\\pa_class_posn.csv'
INTO TABLE pa_class_posn_temp
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(ID,POSN_CLASS_TITLE,SALARY_GRADE,POSN_CLASS_CODE,
RECRUITMENT_TIER,EXEMPT_NONEXEMPT,REVISED);
这是架构:
CREATE TABLE IF NOT EXISTS `pa_class_posn_temp` (
`ID` int(4) NOT NULL,
`POSN_CLASS_TITLE` varchar(36) DEFAULT NULL,
`SALARY_GRADE` varchar(4) DEFAULT NULL,
`POSN_CLASS_CODE` varchar(5) NOT NULL,
`RECRUITMENT_TIER` varchar(6) DEFAULT NULL,
`EXEMPT_NONEXEMPT` varchar(10) DEFAULT NULL,
`REVISED` varchar(10) DEFAULT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `POSN_CLASS_CODE` (`POSN_CLASS_CODE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是存储在 CSV 文件中的一个非常简单的(两行)数据集(只会加载 1 行):
6682,"A D,Stdnt Hlth&Cnslg Bsn Ops","15","A7078","Tier 1","Exempt","04/19/2013"
7698,"AVP,Alumni Relations","17","N8004","Tier 2","Exempt","04/19/2013"
每行都有 CR/LF 行结尾,但您在这里看不到它们。此外,在完整数据集中没有重复 ID(主键),MySQL 不会生成任何警告或错误。
我在 Windows 7 上使用 WAMP。此外,我不能使用 LOCAL 关键字,因为它在最终将使用此代码的生产服务器上不起作用。
非常感谢任何帮助或建议。
最佳答案
您是否也在 Windows 下生成了 csv 文件?如果是,您可能必须使用 LINES TERMINATED BY '\r\n'
关于MySQL load data infile 恰好加载一半的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17555477/