我有一个包含“date_created”列的表,其中我尝试将类型作为DATETIME和TIMESTAMP。
我将此字段的默认值设置为CURRENT_TIMESTAMP
我有一个cvs文件,我想从中将数据加载到dateicreated列为空的表中。
当我将文件加载到表中时,我收到错误代码1292不正确的日期时间值
答案 0 :(得分:0)
如果您有动态计算目标表的方法,那么您不需要在CSV中包含目标表的所有列,或者MySQL会通过默认为您执行此操作。
因此,一种方法是从CSV文件中完全删除date_created列,并将DEFAULT作为LOAD DATA过程的一部分自动生成。如您所示,无论如何您都没有此列的值,该列将默认为CURRENT_TIMESTAMP,因此这似乎是一种合理的方法。
假设一张桌子:
CREATE TABLE `test` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`a` VARCHAR(32) DEFAULT NULL,
`b` VARCHAR(32) DEFAULT NULL,
`date_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
);
因此,您的CSV只会包含列a
和b
的值,而您的LOAD DATA语句将类似于
LOAD DATA INFILE "yourfilename" INTO TABLE `test` FIELDS TERMINATED BY ',' (a,b);
或者,如果你想要有点明确:
LOAD DATA INFILE "yourfilename" INTO TABLE `test` FIELDS TERMINATED BY ',' (a,b) SET id = NULL, date_created = NOW();