我想将 CSV 文件导入 MySQL 5.7 并加载 NULL 值。
我已阅读 MySQL load NULL values from CSV data
如果我使用相同的示例表和数据,它工作正常。 但是,如果我尝试导入以下数据:
1,2,3
1,2,3,4,
1,2,3,4,5
那么输出是:错误代码:1366。不正确的整数值:'' 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,'');
这是一个错误还是我遗漏了什么?似乎只有最后一列出了问题。
最佳答案
我找到了问题的答案。行分隔符似乎不正确。我在 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,'');
关于最后一个 CSV 列中的 MySQL NULL 可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53887540/