LOAD DATA LOCAL INFILE - не работает

xak-2010

Новичок
LOAD DATA LOCAL INFILE - не работает

Доброго времени суток уважаемому собранию.

Помогите заставить работать в php-скрипте следующий MySQL-оператор, который через phpmyadmin работает без проблем в следующем виде:

LOAD DATA LOCAL INFILE 'C:\\kniznica.txt' INTO TABLE `zoznam` FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'

В РНР-скрипте пытался этот опретатор использовать так:

$result = mysql_query("LOAD DATA LOCAL INFILE 'c:\\kniznica.txt' INTO TABLE 'zoznam' FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'");

интерпретатор тут даёт ошибку, видимо синтаксическую, которая исправляется, если BY '"' заменить, например, на BY ' ' то есть двойные кавычки заменить примитивом, или BY '\"'

Но оператор не проходит. Файл kniznica.txt находится и на корне, и в рабочей директории, так что думаю, что проблем с его нахождением нет.
C MySQL соединяюсь как root.

Все мои попытки убирать-ставить дополнительные слэши были неуспешны.

Надеюсь на помощь уважаемых экспертов, за что Вам заранее благодарен.
 

baev

‹°°¬•
Команда форума
Все мои попытки убирать-ставить дополнительные слэши были неуспешны.
— и?
Вы ждёте, что кто-то за Вас расставит слэши?

Изучайте http://www.php.net/manual/en/language.types.string.php
и http://phpfaq.ru/debug

P.S. Кстати, тот случай, когда вполне можно было бы использовать HEREDOC-синтакс…
 

xak-2010

Новичок
То baev:

Благодарю за ответ. Жду помощи, а не "отфутболивания". Пытаюсь сам разобраться и не получается. А зачем тогда форум. А в нём раздел "Для начинающих"? Уверяю Вас, без необходимости не стал бы обращаться к занятым, всем нам, людям. С уважением, автор темы.

-~{}~ 28.04.10 20:38:

To baev:

Прощу прощения, раздел "Для начинающих" взят из соседнего форума... Может и действительно, зачем это я сюда обратился?
 

Вурдалак

Продвинутый новичок
Так или иначе придётся познакомиться с таким понятием, как экранирование символов. Чем раньше — тем лучше.

У тебя есть «чистая» строка:
LOAD DATA LOCAL INFILE 'C:\\kniznica.txt' INTO TABLE `zoznam` FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'
Что именно не получается при оформлении этой строки в PHP-коде?
PHP:
$query = "LOAD ...";
, чтобы, написав,
PHP:
echo $query;
можно было увидеть один в один эту же «чистую» строку?

-~{}~ 28.04.10 23:10:

Ссылку на правила оформления строковых литералов в PHP уже привели.
 

xak-2010

Новичок
Уважаемые Вурдалак и baev! Благодарю Вас за конструктивную помощь. Оператор заработал в следующей интерпретации:

$query=<<<EOD
LOAD DATA LOCAL INFILE 'c:/ComplexWebServer/http_docs/ovtr/kniznica.txt' INTO TABLE zoznam FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n'
EOD;

$result = mysql_query($query) or die(mysql_error());

Правда, для меня остались невыясненными некоторые обстоятельства, например:
1. У меня веб сервер установлен на Виндоус ХР. Почему же тогда к файлу пришлось обращаться по юниксовски, слэшем вперёд?
2. В операторе пришлось убрать опцию ESCAPED BY '\\' Если её вставить, то MySQL выдаёт синтаксическую ошибку, типа: не всё в порядке в районе '"' Эту проблему не решил. Но вроде бы и так лоадует так, как надо.

То baev: С http://phpclub.ru/faq/Whyforum не согласен. И по сути и по духу. Если это Ваш форум, или же Вы здесь устанавливаете правила, обязуюсь снять свою регистрацию. Вступать в бесполезную дскуссию, согласитесь, не имеет смысла.

Ещё раз, спасибо за помощь. С уважением, автор темы.
 

baev

‹°°¬•
Команда форума
Если это Ваш форум, или же Вы здесь устанавливаете правила, обязуюсь снять свою регистрацию.
— вообще-то там внизу (в разделе «Благодарности») ссылки на тему, где эта статья обсуждалась.

Если бы Вы хоть каплю любопытства проявили, Вы бы и своё и моё время сэкономили.
 

Вурдалак

Продвинутый новичок
Автор оригинала: xak-2010
1. У меня веб сервер установлен на Виндоус ХР. Почему же тогда к файлу пришлось обращаться по юниксовски, слэшем вперёд?
— потому что ты не смог разобраться с экранированием.

Автор оригинала: xak-2010
2. В операторе пришлось убрать опцию ESCAPED BY '\\' Если её вставить, то MySQL выдаёт синтаксическую ошибку, типа: не всё в порядке в районе '"' Эту проблему не решил. Но вроде бы и так лоадует так, как надо.
— посмотри что ты получаешь:
PHP:
echo $query;
Посмотри в мануал. Подумай.
 
Сверху