代码之家  ›  专栏  ›  技术社区  ›  Ben Ootjers

MySQL可能在最后一个CSV列中为空

  •  1
  • Ben Ootjers  · 技术社区  · 6 年前

    我想将CSV文件导入MySQL 5.7,并希望加载空值。

    MySQL load NULL values from CSV data

    如果我使用相同的示例表和数据,它就可以正常工作。 但是,如果我尝试导入以下数据:

    1,2,3
    1,2,3,4,
    1,2,3,4,5
    

    Error Code: 1366. Incorrect integer value: '' for column 'five' at row 2

    表创建脚本:

    create table moo(
    one int not null,
    two int not null,
    three int null,
    four int null,
    five int null);
    

    LOAD DATA INFILE '/test-moo.txt' INTO TABLE moo 
        FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
        (one, two, @vthree, @vfour, @vfive)
        SET three = nullif(@vthree,''),
        four = nullif(@vfour,''),
        five =nullif(@vfive,'');
    

    这是一个错误还是我遗漏了什么?最后一列似乎出了问题。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ben Ootjers    6 年前

    我已经找到了我的问题的答案。线路分隔符似乎不正确。我在Windows环境下工作,所以应该是这样 \r\n 而不是 \n .

    所以在纠正之后,它变成了这样,并且正确地处理了:

    LOAD DATA INFILE '/test-moo.txt' INTO TABLE moo 
        FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'
        (one, two, @vthree, @vfour, @vfive)
        SET three = nullif(@vthree,''),
        four = nullif(@vfour,''),
        five =nullif(@vfive,'');