我正在尝试将csv文件从字符串导入到日期时间数据类型的mysql时动态转换时间戳。但我收到#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
。
答案 0 :(得分:0)
您需要通过用户变量。正如the manual所说:
列列表可以包含列名称或用户变量。使用用户变量,
SET
子句使您可以在将结果分配给列之前对其值执行转换。
SET
子句中的用户变量可以通过多种方式使用。以下示例直接使用第一个输入列作为t1.column1
的值,并将第二个输入列分配给在用作t1.column2
的值之前经过除法运算的用户变量:< / p>LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @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');