У меня есть текстовый файл «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, я думаю, что он определенно будет работать здесь. Но почему эта ошибка произойдет?
Я попробовал обрезку запроса, чтобы он содержал только «FIELDS TERMINATED BY», и он сработал. Но база данных, заполненная таким образом, будет содержать неправильные данные. Поэтому я действительно хочу узнать, почему исходный более длинный запрос не сработает?
Благодарю.
Вы используете строку с двойными кавычками, поэтому \r\n
будет рассматриваться как литеральные символы возврата каретки и строки. Вам также необходимо удвоить их: \\r\\n
.
«В строке 2» в сообщении об ошибке свидетельствует об этом – во втором вопросе нет другой второй строки, но из-за встроенного возврата новой строки / каретки, как только она попадает в MySQL.
Попробуй это :
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());