2012-01-19 2 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); 

Но сообщение об ошибке говорит, что «усеченные данные для столбца PlannedDate в row1», 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'); 
Смежные вопросы