[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: LOAD DATA LOCAL INFILE - не работает
xak-2010
Доброго времени суток уважаемому собранию.

Помогите заставить работать в 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.

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

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





Спустя 8 минут, 30 секунд (28.04.2010 - 20:07) sergeiss написал(а):
Замени слэш \ на такой /
И не делай такой слэш двойным.

'C:/kniznica.txt'

И еще. Зачем тут LOCAL?

Спустя 59 минут, 50 секунд (28.04.2010 - 21:07) xak-2010 написал(а):
Уважаемый sergeiss, благодарю за ответ.

Теперь оператор выглядит так:

$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'");

и всё-равно не работает, Видимо, я что-то не так понял...

Спустя 19 минут, 35 секунд (28.04.2010 - 21:27) sergeiss написал(а):
"не работает" - это в чем проявляется? Дает ошибку (какую?), не загружает совсем, не загружает часть...

К сожалению, в данном случае я особо сильно не смогу помочь, т.к. эта команда - специфика MySQL, а я с Постгре работаю smile.gif Так что надо подождать, пока сюда спецы по "дефолт БД" заглянут.

Спустя 38 минут, 24 секунды (28.04.2010 - 22:05) xak-2010 написал(а):
Уважаемый sergeiss, благодарю за ответ.

В процессе выполнения программы, этот оператор проходит и никакого действия. Интерпретатор ошибок не выдаёт. Поэтому я решил, что синтаксис прошёл, а на самом деле, что-то чему-то не нравится. По идее, должны лоаднуться 7 тыщ строк, а результат последующего "селект всё" - 0.

Спустя 4 минуты, 4 секунды (28.04.2010 - 22:09) ZSH написал(а):
$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'") or die(mysql_error());


попробуй может так выведет ошибку

Спустя 2 дня, 34 минуты, 55 секунд (30.04.2010 - 22:44) xak-2010 написал(а):
Уважаемые sergeiss и ZSH! Благодарю Вас за конструктивную помощь. Оператор заработал в следующей интерпретации:

$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 выдаёт синтаксическую ошибку, типа: не всё в порядке в районе '"' Эту проблему не решил. Но вроде бы и так лоадует так, как надо.

Огромное Вам спасибо за помощь. С уважением, автор темы.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.