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

时间:2015-05-26 15:28:38

标签: mysql ruby-on-rails mysqlimport

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

修改: 注意:

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

有关

2)我使用这个mysqlimport: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)datetime列是通过rails迁移创建的rails timestamp created_at

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

可以快速破解:

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

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