使用CSV文件中的数据填充MySQL表

时间:2012-01-19 21:16:26

标签: mysql csv fill

有一个包含以下数据的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.所有行都有相同的错误消息。

3 个答案:

答案 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

这就是您收到截断错误的原因。