Заполните таблицу MySQL данными из файла CSV - PullRequest
1 голос
/ 20 января 2012

Есть файл 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 at row1" , ErrorNr.1265. Одно и то же сообщение об ошибке для всех строк.

Ответы [ 3 ]

2 голосов
/ 20 января 2012

Дата имеет неправильный формат, она должна быть 2012-01-19

2 голосов
/ 20 января 2012

Если вы застряли в этом формате даты (который не является 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');
0 голосов
/ 20 января 2012

в этой строке:

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

два последних параметра поменялись местами: stID,resQty

ДОЛЖНО быть:

resQty, stID

Вот почему вы получаете ошибку усечения.

...