1

在将 csv 文件从字符串导入 mysql 到 datetime 数据类型时,我正在尝试即时转换时间戳。但我收到一个#1411 - Incorrect datetime value: '2007-03-30 16:01:15' for function str_to_date错误。

SQL:

load data infile 'C:/ProgramData/MySQL/MySQL Server 5.5/data/testfile.csv'
into table test
fields terminated by ','
lines terminated by '\n'
(date, col1,col2,col3,col4)
SET
date = str_to_date(date,'%Y.%m.%d %H:%i:%s.%f');

.csv 中的所有行的格式如下:

2007.03.30 16:01:15.901,117.53,117.55,35600000,43700000

我已申请

SELECT str_to_date(date,'%Y.%m.%d %H:%i:%s.%f') FROM test

对已经存储在 mysql 中的数据进行采样,它确实有效。

目标行date设置为DATETIME

4

1 回答 1

0

您需要通过用户变量。正如手册所说:

列列表可以包含列名或用户变量。对于用户变量,该SET子句使您能够在将结果分配给列之前对其值执行转换。

子句中的用户变量SET可以以多种方式使用。以下示例直接将第一个输入列用于 的值t1.column1,并将第二个输入列分配给一个用户变量,该用户变量在用于 的值之前要经过除法运算t1.column2

加载数据文件'file.txt'
  进入表 t1
  (列 1,@var1)
  SET column2 = @var1/100;

在你的情况下:

LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 5.5/data/testfile.csv'
  INTO TABLE test
  FIELDS TERMINATED BY ','
  LINES  TERMINATED BY '\n'
  (@date, col1, col2, col3, col4)
  SET date = STR_TO_DATE(@date, '%Y.%m.%d %H:%i:%s.%f');
于 2012-05-29T22:27:47.670 回答