从文件加载表时MYSQL TIMESTAMP错误代码1292

时间:2018-02-09 20:42:07

标签: mysql

我有一个包含“date_created”列的表,其中我尝试将类型作为DATETIME和TIMESTAMP。

我将此字段的默认值设置为CURRENT_TIMESTAMP

我有一个cvs文件,我想从中将数据加载到dateicreated列为空的表中。

当我将文件加载到表中时,我收到错误代码1292不正确的日期时间值

1 个答案:

答案 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只会包含列ab的值,而您的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();