Наверное все наслышаны про "very high speed" оператора LOAD DATA
INFILE, потому я применяю его там, где позволяет логика системы и
критична нагрузка на БД.
В конкретном примере данные о поступающих запросах пишутся в comma-
separated лог-файл, который раз в 5 минут загружается в БД с помощью
"LOAD DATA INFILE".
При этом даже не возникает проблем с репликацией данных - достаточно
чтоб загружаемый файл был только на одном сервере.
Все это счастье работало до того, пока его не начали переносить на
удаленный от MySQL-сервера хост.
Вот тут мне начали валиться ошибки а-ля "нет доступа к файлу": минут
40 выполнения chmod-ов на всем, что хоть как-то относится к пути
файла, не привели к результатам.
После прочтения документации проблема решилась сама тривиально - при
загрузке файла в БД на удаленый сервер, MySQL пытается найти файл на
этом самом сервере, и когда не находит, честно пишет "нет доступа к
файлу".
Загрузку локального файла на удаленный MySQL-сервер необходимо
выполнять приблизительно так:
LOAD DATA LOCAL INFILE ...
Ключевое слово LOCAL - указывает, что файл нужно искать на клиенте.
Описанное выше отлично описано в документации, потому это
показательный пример того как можно сохранить уйму времени регулярно
заглядывая в документацию.
http://voituk.kiev.ua/2007/09/12/mysql-load-data-infile-local/