Путь файла при LOAD DATA LOCAL INFILE

beg_mysql

Новичок
Путь файла при LOAD DATA LOCAL INFILE

Загружаю файл при помощи LOAD DATA LOCAL INFILE
В "домашних" условиях все нормально - открываю в phpmyadmin "обзором" и все О.К.

Захожу в Инет, скидываю файл, прописываю полный путь типа "htt://my_syte/..../myfile.txt" - файл не найден.
Пробую "myfile.txt" и файл бросаю в одной папке со скриптом - тоже самое.

ГДЕ должен находиться файл и какой должен быть путь?

P.S. LOAD DATA INFILE - не советуйте, т.к. не хватает прав.
 

ys

отодвинутый новичок
beg_mysql

полный путь - это путь на сервере, а http - это не путь, а URL.
Он к пути не имеет никакого отношения.

P.s: посмотри phpinfo()
 

ForJest

- свежая кровь
В "домашних" условиях все нормально - открываю в phpmyadmin "обзором" и все О.К.
phpMyAdmin этот файл получает POST-ом.
ГДЕ должен находиться файл и какой должен быть путь?

P.S. LOAD DATA INFILE - не советуйте, т.к. не хватает прав.
Ты уж определись - тебе нужен LOAD DATA INFILE или не нужен?
 

beg_mysql

Новичок
Автор оригинала: ForJest
phpMyAdmin этот файл получает POST-ом.

Ты уж определись - тебе нужен LOAD DATA INFILE или не нужен?
Мне нужен LOAD DATA LOCAL INFILE, а LOAD DATA INFILE - не подходит.

И все же куда выкладывать файлы, точнее - где "корень"
Какой это параметр в phpinfo
 

ForJest

- свежая кровь
Понимаешь, LOAD DATA LOCAL использует файлы с _клиентской_ машины. Если у тебя скрипт выполняется на сервере, то именно он является клиентом. Таким образом LOAD DATA INFILE и LOAD DATA LOCAL INFILE для тебя равнозначны.

В целом же - тебе нужно указать полный путь в файловой системе клиента, если ты используешь LOCAL. Путь ты можешь получить с помощью [m]getcwd[/m]. То же самое ты указываешь и для LOAD DATA без LOCAL, но в файловой системе сервера.

Если у тебя не хватает привилегий в MySQL на выполнение LOAD DATA, то LOCAL тебе ничем не поможет.

Итого. Если скрипт у тебя лежит в папке /home/i_m_cool_hacker/ и ты ложишь "рядом с ним" свой файл с данными my_data.txt, то тебе нужно выполнить:
[sql]
LOAD DATA INFILE '/home/i_m_cool_hacker/my_data.txt'
[/sql]
Модификатор LOCAL в данном случае, ещё раз подчеркну не имеет никакого значения, если и MySQL и скрипты находятся на одном комьютере.
 

beg_mysql

Новичок
Автор оригинала: ForJest

Если у тебя не хватает привилегий в MySQL на выполнение LOAD DATA, то LOCAL тебе ничем не поможет.
На самом деле LOAD DATA (без локал) требует привилегии FILE, а локал - нет.
Проверено лично phpmyadmin'ом.
 

ForJest

- свежая кровь
beg_mysql
Можно подробнее, о том, как это делает phpMyAdmin? И о привелегиях FILE в том числе, с цитатой из документации?
 

Апельсин

Оранжевое создание
ForJest, он прав, между прочим.
А у него просто клиент собран с библиотекой, где отключена возможность использовать LOAD DATA LOCAL.
 

ForJest

- свежая кровь
Апельсин
Мне нужен LOAD DATA LOCAL INFILE, а LOAD DATA INFILE - не подходит.
Судя по всему он как раз упирает на то, что ему нужен LOCAL :) Посему я могу заключить из имеющейся ин-ции, что секьюрные настройки не имеют значения.
Но я дождусь ответа - мне интересно с каких это пор phpMyAdmin приравнивается к клиенту MySQL.
 

beg_mysql

Новичок
Автор оригинала: ForJest
beg_mysql
Можно подробнее, о том, как это делает phpMyAdmin? И о привелегиях FILE в том числе, с цитатой из документации?
Пожалуйста,
в phpMyAmdin в нужной таблице нажимаем на ссылку "Вставить текстовые файлы в таблицу" (обычно она расположена самом низу страницы).
Открывается новая страница.
В ней кнопкой "обзор" выбыраем нужный файл, остальные параметры (символы разделения полей, строк и т.д.) - в зависимости от исходного файла.
Выбираем метод LOAD:
1) DATA
2) DATA LOCAL
и жмем кнопку "выполнить".

Видишь, как все просто

А если серъезно, то цитата касательно привилегии FILE
"For security reasons, when reading text files located on the server, the files must either reside in the database directory or be readable by all. Also, to use LOAD DATA INFILE on server files, you must have the FILE privilege. See section 5.5.3 Privileges Provided by MySQL."

А в случае с LOCAL привилегия файл - не нужна.
"Using LOCAL is a bit slower than letting the server access the files directly, because the contents of the file must be sent over the connection by the client to the server. On the other hand, you do not need the FILE privilege to load local files. "
http://mysql.directnet.ru/doc/mysql/en/LOAD_DATA.html
 

ForJest

- свежая кровь
you do not need the FILE privilege to load local files.
Спасибо :) Буду знать.
Ну тогда получается всё правильно. Кстати в доке в той же написано где MySQL ищет файлы для LOAD DATA INFILE :)
 
Сверху