目标表有一个名为updated
的列,设置为:
Name: updated
Type: timestamp
Attributes: on update CURRENT_TIMESTAMP
Null: No
Default: CURRENT_TIMESTAMP
Extra: ON UPDATE CURRENT_TIMESTAMP
源数据采用CSV格式,每行updated
字段为空,例如
id,item_name,updated,quantity
1,car,,4
2,truck,,5
3,chair,,5
使用PHPMyAdmin导入后,我希望在导入执行时看到updated
列填充当前日期/时间,但是,我得到所有0000-00-00 00:00:00
。
MySQL版本:5.5.30。这个结果与MyISAM和InnoDB相同。
答案 0 :(得分:1)
那是因为提供了该字段。它以空字符串形式提供,与NULL
或默认值不同。
转换为数字值时,空字符串将转换为0
。格式化为日期的时间戳0
为0000-00-00 00:00:00
。
您可以在导入后运行UPDATE table SET updated=NOW()
(如果您始终导入完整的集合),也可以从CSV中删除整个列。
答案 1 :(得分:1)
如何在phpmyadmin中更新SET?
使用上述列,将CSV中更新列的每个值指定为“NULL”。然后将csv导入的日期添加到mySQL。
我注意到一个奇怪的事情是列中的定义错误。即使有一个空表,它告诉我TIMESTAMP的默认值不能是CURRENT_TIME。为了解决这个问题,我把头撞在桌子上三次,将类型更改为日期时间,保存,然后重新编辑,并允许将类型更改为TIMESTAMP。
答案 2 :(得分:0)
以下步骤适用于将时间戳设置为NULL。 1.设置列的默认值-更新为NULL(无论如何,您希望时间戳记为空) 2.在csv文件中,键入NULL而不是将字段保留为空
此方法也可以用于自动增量