日期列(数据类型-timestamp)未从csv正确导入MySql

时间:2016-03-05 21:46:27

标签: mysql csv

我正在尝试使用LOAD DATA LOCAL INFILE将数据从csv文件导入MySQL。除了具有时间戳作为其数据类型的日期列之外的所有列都将正确导入。我收到错误1265:数据被截断为日期列,它为所有值插入00:00:00。这已被问过,但我没有找到一个完美的解决方案。我也尝试过针对此类问题发布的各种解决方案,但没有一个适用于我。

表格创建声明:

CREATE TABLE MySchema.response
(
`id` int,
`version` int,
`name` varchar(500), 
`date_created` timestamp,
`last_updated` timestamp, 
`count` int,
);

将数据加载到表中:

LOAD DATA LOCAL INFILE 'C:/response.csv' 
INTO TABLE MySchema.response
FIELDS TERMINATED BY ',' optionally ENCLOSED by '"' 
ignore 1 lines

CSV文件中的示例数据

id版本名称date_created last_updated count
1,0,xyz,5/3/2013 1:18,5 / 3/2013:1:1,8,2 2,0,abc,5/3/2013 1:18,5 / 3/2013:1:1,

1 个答案:

答案 0 :(得分:0)

示例中的日期列不是MySQL的默认格式,因此不会标识为日期。您需要尝试以下内容,以便说明日期应如何解释:

LOAD DATA LOCAL INFILE 'C:/response.csv' 
INTO TABLE MySchema.response
FIELDS TERMINATED BY ',' optionally ENCLOSED by '"' 
IGNORE 1 lines
(id, version, name, @date_created, @last_updated, count)
SET date_created = STR_TO_DATE(@date_created, '%d/%c/%Y %k:%i'),
last_updated = STR_TO_DATE(@last_updated, '%d/%c/%Y %k:%i');

检查MySQL date format documentation以查找适合您情况的说明符(可能是我在上面的示例中添加的说明符)。