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.
我有一些定期生成的文本文件,其中包含 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.