有一个包含以下数据的CSV文件:
1;8-25-2010;0:05;210;4
2;8-25-2010;2:45;412;5
3;8-25-2010;3:40;300;3
4;8-25-2010;4:45;226;6
5;8-25-2010;5:20;206;4
6;8-25-2010;5:25;216;3
还有MySQL表:
CREATE TABLE IF NOT EXISTS `Schedule` (
`ID` SMALLINT NOT NULL AUTO_INCREMENT,
`Num` INT(10),
`PlannedDate` DATE,
`PlannedTime` TIME NOT NULL,
`resQty` INT(3) NOT NULL,
`stID` VARCHAR(10) NOT NULL,
PRIMARY KEY (`ID`),
FOREIGN KEY `stID` (`stID`) REFERENCES Stands (`stID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
现在我需要用CSV文件中的数据填充此表。为此,我使用以下代码:
TRUNCATE TABLE testDB.Schedule;
LOAD DATA LOCAL INFILE 'C:\\temp\\Input.csv'
INTO TABLE testDB.Schedule FIELDS TERMINATED BY ';' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n' (Num,PlannedDate,PlannedTime,stID,resQty);
但是错误消息显示“第1行的PlannedDate列数据被截断”,ErrorNr。 1265.所有行都有相同的错误消息。
答案 0 :(得分:2)
日期格式错误,应为2012-01-19
答案 1 :(得分:2)
如果您遇到该日期格式(不是MySQL默认格式),您可以将这些日期加载到临时变量中,然后将其转换为日期,如下所示:
TRUNCATE TABLE testDB.Schedule;
LOAD DATA LOCAL INFILE 'C:\\temp\\Input.csv'
INTO TABLE testDB.Schedule FIELDS TERMINATED BY ';' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
(Num,@PlannedDate,PlannedTime,stID,resQty)
SET PlannedDate = STR_TO_DATE(@PlannedDate,'%m-%d-%Y');
答案 2 :(得分:0)
在这一行:
(Num,PlannedDate,PlannedTime,stID,resQty);
最后两个参数相反:stID,resQty
它应该是:
resQty, stID
这就是您收到截断错误的原因。