@pantey

Как передать параметр local-infile = 1 в drupal 7?

Вообщем ситуация в следующем, есть файл CSV - примерно 200 000 строк (в принципе не суть), необходимо быстро выгрузить в таблицу Mysql.

Соответственно сделана форма, которая по сабмиту должна выполнить данный запрос через db_query()
db_query("
    LOAD DATA LOCAL INFILE 'http://sitename.com/sites/default/files/example/example.csv' 
    INTO table example_table
    CHARACTER SET 'UTF8'
    FIELDS TERMINATED BY ';' 
    LINES TERMINATED BY '\r\n' 
    IGNORE 1 LINES
  ");


Теперь проблема, если использовать напрямую через PhpMyAdmin - то запрос отрабатывает, экспорт проходит. А вот через сабмит - сайт уходит в ошибку, в логах пусто! Пообщался с провайдером, подсказал передать флаг local-infile при соединении с БД, думал в db_query() передать
db_query("
    LOAD DATA LOCAL INFILE 'http://sitename.com/sites/default/files/example/example.csv' 
    INTO table example_table
    CHARACTER SET 'UTF8'
    FIELDS TERMINATED BY ';' 
    LINES TERMINATED BY '\r\n' 
    IGNORE 1 LINES
  ", array('local-infile' => true));

Но не прокатило. Доступа к my.cnf нет. Может есть у кого какие идеи ?
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 1
Nikiit
@Nikiit
Drupal developer
www.zimplicit.se/en/knowledge/drupal-6-and-load-da...
$connection = mysqli_init();
  mysqli_options($connection, MYSQLI_OPT_LOCAL_INFILE, true); //added to be able to run LOAD DATA LOCAL INFILE
  @mysqli_real_connect($connection, $url['host'], $url['user'], $url['pass'], substr($url['path'], 1), $url['port'], NULL, MYSQLI_CLIENT_FOUND_ROWS);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы