LOCAL DATA INFILE из скрипта : не выполняется

Ekklipce

Новичок
LOCAL DATA INFILE из скрипта : не выполняется

Такая вот хрень

напряммую руллит в пхпмайадмин, через mysql_query() - нет.

так и должно быть, или может для подобного запроса мало просто написать mysql_query($query)
 

Ekklipce

Новичок
аа....

орёт что синтексис не тот
PHP:
LOAD DATA INFILE 'D:\\work\\offer.csv' INTO TABLE `offer` FIELDS TERMINATED BY ';' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'
спецсимволы, \,' и так далее

-~{}~ 05.10.05 15:38:

хеех..
теперь в синтаксисе путаница :(...
 

ForJest

- свежая кровь
Ekklipce
Прямо из динамиков орёт? :) По-русски? :).
Приведи текст ошибки. И, пожалуйста, _всегда_ приводи текст ошибки полностью.
 

Ekklipce

Новичок
PHP:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '\'' at line 3
как реакция на запрос выше

-~{}~ 05.10.05 15:52:

2 ForJest
вроде как корректная строка, спокированная из phpmyadmin
 

Ekklipce

Новичок
результат


LOAD DATA INFILE 'D:\work\offer.csv' INTO TABLE offer FIELDS TERMINATED BY ';' ESCAPED BY '\' LINES TERMINATED BY ' \'

-~{}~ 05.10.05 16:26:

упрощенный :

LOAD DATA LOCAL INFILE 'D:\\work\\offer.csv' INTO TABLE `offer` FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n'

echo :

LOAD DATA LOCAL INFILE 'D:\work\offer.csv' INTO TABLE `offer` FIELDS TERMINATED BY ';' LINES TERMINATED BY ' '

в пхпмайадмине работает

ошибка : The used command is not allowed with this MySQL version

-~{}~ 05.10.05 16:38:
 

ForJest

- свежая кровь
PHP:
$query = "LOAD DATA INFILE 'D:\\work\\offer.csv' INTO TABLE `offer` FIELDS TERMINATED BY ';' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'";
//меняем на
$query = 
<<<QUERY
LOAD DATA INFILE 'D:\work\offer.csv' INTO TABLE `offer` FIELDS TERMINATED BY ';' ESCAPED BY '\' LINES TERMINATED BY '\r\n';
QUERY;
//или на
$query = "LOAD DATA INFILE 'D:\\work\\offer.csv' INTO TABLE `offer` FIELDS TERMINATED BY ';' ESCAPED BY '\\' LINES TERMINATED BY '\\r\\n'";
-~{}~ 05.10.05 15:58:

"'\r\n'" заменяет на коды перевода строки и получается в итоге
'

';
что можно увидеть, если вывести
echo '<pre>',htmlspecialchars($query),'</pre>';
 

Ekklipce

Новичок
ответ на
//или на
$query = "LOAD DATA INFILE 'D:\\work\\offer.csv' INTO TABLE `offer` FIELDS TERMINATED BY ';' ESCAPED BY '\\' LINES TERMINATED BY '\\r\\n'";

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '\r\n'' at line 3

слушай, может дело в режимах magic_quotes ?
 

ForJest

- свежая кровь
Я не пойму - почему at line 3?
тот текст что ты привёл расположен на одной строке...
 

Ekklipce

Новичок
интересно что phpmyadmin генерит такой код :
PHP:
$sql = 'LOAD DATA LOCAL INFILE ''D:\\\\work\\\\offer.csv'' INTO TABLE `offer` FIELDS TERMINATED BY '';'' LINES TERMINATED BY ''\\r\\n''';
и его же там исполняет :))
 

ForJest

- свежая кровь
ESCAPED BY '\\\\'

-~{}~ 05.10.05 16:16:

Следует учитывать, что в записи FIELDS ESCAPED BY '\' необходимо указывать два обратных слеша для величины, которая должна читаться как один обратный слеш.
http://dev.mysql.com/doc/mysql/ru/load-data.html

-~{}~ 05.10.05 16:17:

Таким образом - два слэша съедают строки PHP и ещё одно дублирование нужно для самого mysql.

-~{}~ 05.10.05 16:18:

$query =
<<<QUERY
LOAD DATA INFILE 'D:\work\offer.csv' INTO TABLE `offer` FIELDS TERMINATED BY ';' ESCAPED BY '\\' LINES TERMINATED BY '\r\n';
QUERY;
Лучшее и самое наглядное пособие :)
 

Ekklipce

Новичок
можно коректный пхпкод этой вот хрени ?
PHP:
$query = 
<<<QUERY 
LOAD DATA INFILE 'D:\work\offer.csv' INTO TABLE `offer` FIELDS TERMINATED BY ';' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'; 
QUERY;
-~{}~ 05.10.05 17:24:

ругаеться пых на этот код.
 

ForJest

- свежая кровь
Ekklipce
Прямо из динамиков орёт? :) По-русски? :).
Приведи текст ошибки. И, пожалуйста, _всегда_ приводи текст ошибки полностью.
-~{}~ 05.10.05 16:29:

убери пробел после
<<<QUERY

-~{}~ 05.10.05 16:30:

Все пробелы, после
<<<QUERY
не должно быть пробелов.
 

Ekklipce

Новичок
<<<query
действительно забыл убрать пробел

вобщем в итоге отложив форум в сторонку решил идти от противного - слешами достроил тот запрос, который кушает phpmyadmin, и заработало !..

вот конечный результат

$query =
<<<QUERY
LOAD DATA INFILE 'D:\\\\work\\\\offer.csv' INTO TABLE offer FIELDS TERMINATED BY ';' ESCAPED BY '\\\\' LINES TERMINATED BY '\\r\\n';
QUERY;
 
Сверху