Mysql import将timestamp空值转换为0000-00-00 00:00:00

我有一些文本文件 – 定期生成 – 其中包含要使用mysqlimport插入mysql的sql行。 其中一列具有Null值,数据库中的此列是日期时间字段,默认值设置为Null。 但是在运行mysql导入之后,我在这个专栏中得到了值00:00:00,那我怎么能摆脱这个呢? 我希望列值在插入时为Null。

编辑 :备注:

1)使用INSERT语句直接插入行时,不会发生此问题,并且列值通常设置为NULL,因此这与mysqlimport

2)我使用mysqlimport: mysqlimport -u root -p -h localhost --columns='' --local --fields-terminated-by=','

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

4)datetime列是通过rails迁移创建的rails timestamp created_at

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

可以快速破解:

  • 暂时将datetime列的类型更改为VARCHAR以便空值变为空字符串。

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