MySQL load data infile 恰好加载一半的记录

标签 mysql csv load-data-infile

我正在使用 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/

相关文章:

php - 清理密码的正确方法是什么?

php - 导出为 csv 时,货币英镑显示为 £

MySQL合并相关表中的数据并导出为.csv

mysql - 在 MySQL 中实现快速插入大量数据的最佳方法是什么?

mysql - 有没有办法在从 MySQL 中的文件加载数据时插入自定义数据?

php - 加载文件中的数据错误

php - 使用触发器来防止在 MySQL 中插入代码

mysql 在加载数据时去除 unicode 斜杠

php - 在 WordPress 存档下拉列表中显示嵌套几个月内的帖子和计数器

arrays - 将CSV文件导入python,然后将其转换为numpy数组,然后将其输入sklearn算法