最后一个 CSV 列中的 MySQL NULL 可能

标签 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

那么输出是:错误代码: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/

相关文章:

python - 嵌套 SQL 查询太慢

PHP MySQL 用户最近 10 分钟在线

php - 脚本使用准备好的语句生成 SQL 语句后将其发送到服务器

MySQL搜索任何单词而不是所有单词

mysql - 互联网上的 MySQL 集群对于在线备份来说是一个好主意吗?

mysql - Sql Join 查询的行结果

MySQL CASE WHEN 内的 CASE WHEN

mysql - ADD INDEX 使 MySQL 崩溃

php - 避免\r\n\on mysql 导入

mysql - 更新后数据库字段未更改