Mysql 导入将时间戳空值转换为 0000-00-00 00:00:00

Mysql import transforms timestamp null values to 0000-00-00 00:00:00

我有一些定期生成的文本文件,其中包含 sql 行,这些行将使用 mysql 导入插入到 mysql。其中一列有 Null 值,数据库中的这一列是日期时间字段,默认值设置为 Null。但是在 运行 mysql 导入之后,我在该列中得到了值 0000-00-00 00:00:00,那么我该如何摆脱它呢?我希望列值在插入时为 Null。

编辑: 备注:

1) 直接使用INSERT语句插入一行时,不会出现这个问题,列值正常设置为NULL,所以这与mysqlimport

有关

2) 我使用这个 mysql 导入:mysqlimport -u root -p<password> -h localhost --columns='<columns_orders>' --local --fields-terminated-by=',' <db_name> <file_path>

3) 数据文件中一行的样本:5964,45,0,0,NULL,45,5,8,67869,67848,65142,1,NULL,NULL,NULL,19

4) 日期时间列是通过 rails 迁移创建的 rails 时间戳 created_at

可以快速破解:

  • 暂时将该日期时间列的类型更改为 VARCHAR,以便空值变为空字符串。

  • 导入完成后,将该列的类型改回日期时间,它会为您提供所需的结果:)

如果 table 定义允许 null 并且默认为 NULL 并且您的源数据也包含 \N 那么您应该按预期获得 NULL。 MySQL 在许多方面都不是可靠的数据库服务器,因此我需要您的资源(至少一些示例)来诊断实际问题。可能是空字符串而不是 \N.