2012-01-19 42 views
2

這裏有一個CSV數據如下文件:填充MySQL表從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); 

但該錯誤消息說,「數據被截斷在ROW1列PlannedDate」,ErrorNr。 1265.所有行都有相同的錯誤信息。

回答

2

的日期格式不正確,應該是2012-01-19

+0

爲什麼會出現截斷錯誤呢? –

+0

好吧,我試圖將日期格式更改爲「2012-01-19」,並解決了問題。 –

0
在這一行

(Num,PlannedDate,PlannedTime,stID,resQty); 

最後兩個參數是相反的:stID,resQty

應該是:

resQty, stID 

這就是爲什麼你得到一個截斷誤差。

+0

我不這麼認爲,因爲在CSV文件中我有stdID-> resQty。對不起,沒有提到這一點。 –

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');