2012-01-19 11 views
2

をCSVファイルからのデータでMySQLのテーブルを入力します。今、私はこのテーブルを埋めるために必要次のデータをCSVファイルがあり

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; 

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表があります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); 

をしかし、エラーメッセージが、ErrorNr「データがROW1の列PlannedDateのために切り捨てられる」と述べている。このために私は次のコードを使用しています。すべての行に対して同じエラーメッセージが表示されます。この行の

答えて

2

日付が間違った形式になっていますが(MySQLのデフォルトではありません)その日付形式で立ち往生している場合、それは2012年1月19日

+0

なぜ切り捨てエラーがありますか? –

+0

さて、私は日付の形式を "2012-01-19"に変更しようとしましたが、問題が修正されました。 –

0

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

2つの最後のパラメータが逆になっている:stID,resQty

それは次のようになります。

resQty, stID 

あなたは打ち切り誤差を得ている理由です。

+0

CSVファイルではstdID-> resQtyがあるので、私はそうは思わない。これについて言及してくれないのは残念です。 –

2

する必要があり、あなたは一時的な変数にこれらの日付を読み込むことができますし、

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'); 
関連する問題