mysql最后一列可能为空

b4wnujal  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(262)

我想导入csv文件到MySQL5.7,并希望加载空值。
我已从csv数据读取mysql load null值
如果我使用相同的样本表和数据,它工作得很好。但是,如果我尝试导入以下数据:

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);

我对可为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,'');

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

fkaflof6

fkaflof61#

我已经找到了我的问题的答案。似乎行分隔符不正确。我正在windows环境中工作,因此应该是\r\n而不是\r\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,'');

相关问题