7

我正在使用 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 关键字,因为这在此代码最终将存在的生产服务器上不起作用。

非常感谢任何帮助或建议。

4

2 回答 2

10

您是否也在 Windows 下生成了 csv 文件?如果是,您可能必须使用LINES TERMINATED BY '\r\n'

于 2013-07-10T02:19:35.280 回答
0

我也面临这个问题,这个查询的基本原则是,

如果“CSV”文件是从以下位置生成的:

视窗

那么换行符是'\r\n' [CR/LF] 即,TERMINATED BY '\r\n' 对于

苹果系统

然后换行符是\n[LF] 即,TERMINATED BY '\n'


小提示:在 IntelliJ 上使用 macOS,您可以通过单击 LF 轻松更改文件中的新字符(下图)

行分隔符

于 2020-12-29T12:43:39.630 回答