2016-03-05 47 views
0

我想从一个csv文件导入数据到MySQL使用LOAD DATA LOCAL INFILE。除时间戳作为其数据类型的日期列以外的所有列都可以正确导入。我得到错误1265:数据被截断日期列,它插入所有值的值为00:00:00。这已被问过,但我没有找到一个完美的解决方案。我也尝试过针对这类问题发布的各种解决方案,但没有一个适合我。日期列(datatype -timestamp)没有从csv正确导入到MySql

表创建语句:

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数
1,0,xyz,5/3/2013 1:18,2013/5/3 2013/18,2
2,0,abc,5/3/2013 1:18,2013/5/3 1 :18,1

回答

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

+1

只有改变我不得不改变月份和日期的地方。在我的csv文件中,格式是mm-dd-YYYY。神奇的解决方案,并感谢您的日期格式文件 –