LOAD DATA INFILE читает внешний ключ как запятую - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь загрузить данные в таблицу sql с помощью команды LOAD DATA INFILE. В целях тестирования в моем файле только одна строка, но в будущем ее будет намного больше. На данный момент содержимое выглядит следующим образом:

LOAD DATA INFILE 'c:/users/jgonz/documents/myproject/labtxt.csv' INTO TABLE labevents FIELDS
TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' ;

17871279;60669;86433;50819;"2149-11-09 19:42:00";8.0;8.0;"nan";"nans"

Где второе число, 60669 - внешний ключ. При использовании LOAD DATA INFILE я получаю сообщение об ошибке, указывающее на сбой ограничения внешнего ключа, указывающее на этот столбец, но я знаю, что такой идентификатор существует в таблице, на которую он указывает. Кроме того, если я загружаю тот же файл с помощью пользовательского интерфейса phpmyadmin, проблема вообще возникает.

Пытаясь найти проблему, я запускаю команду SHOW ENGINE INNODB STATUS; и в LATEST FOREIGN KEY ERROR обнаружил это

Foreign key constraint fails for table `openmrs`.`labevents`:
,
  CONSTRAINT `patient_id` FOREIGN KEY (`patient_id`) REFERENCES `patient` (`patient_id`) ON DELETE RESTRICT ON UPDATE RESTRICT

Означает ли это, что значение внешнего идентификатора читается как запятая (,)? Если да, то как? Зачем? и как это исправить? Я кстати использую windows 10

1 Ответ

0 голосов
/ 21 июня 2020

Я чувствую себя таким тупым, я только что осознал проблему

LOAD DATA INFILE 'c:/users/jgonz/documents/myproject/labtxt.csv' INTO TABLE labevents FIELDS
TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' ;

Строка завершается символом ';' вместо ','

...