MySql Загрузка данных Локальный синтаксис? - PullRequest
0 голосов
/ 05 августа 2011

У меня есть текстовый файл "result.txt", в котором используются каналы '|' отделить поля. Я использовал PhpMyAdmin и успешно импортировал его в свою таблицу, указав с помощью «CSV LOAD DATA» и сказав, что поля должны быть разделены знаком «|».

PhpMyAdmin также дал полный запрос на него, поэтому я скопировал его и вставил в свой скрипт php, который выглядел так:

 mysql_query("LOAD DATA LOCAL INFILE 'C:/wamp/www/TouchStone/result.txt' INTO TABLE customer_change FIELDS TERMINATED BY '|' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' ")
 or die(mysql_error());

Я всегда получу сообщение об ошибке:

В вашем синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '' 'в строке 2

Мне было интересно, поскольку я скопировал точно такой же запрос, сгенерированный phpmyadmin, я думаю, что он определенно будет работать здесь. Но почему такая ошибка произойдет?

Я попытался обрезать запрос, чтобы он содержал только «ОБЛАСТИ, ПРЕКРАЩЕННЫЕ», и это сработало. Но база данных, заполненная таким образом, будет содержать неверные данные. Поэтому я действительно хочу узнать, почему исходный более длинный запрос не будет выполнен?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Вы используете строку в двойных кавычках, поэтому \r\n будет рассматриваться как буквенный символ возврата каретки и перевода строки. Вам также нужно будет дважды убежать от них: \\r\\n.

Свидетельство тому - «в строке 2» в сообщении об ошибке - второй строки в вашем запросе нет, но из-за встроенного перевода строки / возврата строки, когда он попадает в MySQL.

0 голосов
/ 05 августа 2011

Попробуйте это:

mysql_query("LOAD DATA LOCAL INFILE 'C:/wamp/www/TouchStone/result.txt' INTO TABLE customer_change FIELDS TERMINATED BY '|' ESCAPED BY '//' LINES TERMINATED BY '/r/n' ")
 or die(mysql_error());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...