Почему количество строк, вставляемых в MySQL, меньше при вставке с использованием LOAD DATA LOCAL INFILE из ruby - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь вставить данные из текстового файла в MySQL с помощью команды LOAD DATA LOCAL INFILE.

Когда я нажимаю эту команду в окне MySQL, я получаю общее количество вставленных записей.

LOAD DATA LOCAL INFILE 'filepath' INTO TABLE tablename FIELDS TERMINATED BY '\t';

Однако, когда я передаю ту же команду, используя ruby, я вижу, что меньше данных вставляется.

connect.query("LOAD DATA LOCAL INFILE 'filepath' INTO TABLE tablename FIELDS TERMINATED BY '\\t';")

Я подтвердил, напечатав вышеуказанный запрос, и он такой же.

Я использую MySQL Workbench 6.3 версии 6.3.10 build 12092614

1 Ответ

0 голосов
/ 24 мая 2018

Если 'filepath' является переменной, значение не будет расширено.Попробуйте это:

connect.query("LOAD DATA LOCAL INFILE '#{filepath}' INTO TABLE tablename FIELDS TERMINATED BY '\\t';")

Если 'filepath' является литералом пути к файлу, попробуйте использовать абсолютный путь от корня.То есть, если MySQL работает локально.

Если этот запрос отправляется на удаленный сервер MySQL, то нет никакой надежды на то, что он откроет локальный файл, и вам может потребоваться полностью пересмотреть свою стратегию импорта.

...