最后一个CSV列中的MySQL NULL

时间:2018-12-21 15:48:49

标签: mysql

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

我已阅读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);

我将nullif表达式用于可为空的列:

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 个答案:

答案 0 :(得分:0)

我已经找到我问题/答案的答案。似乎行分隔符不正确。我正在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,'');