Как использовать Zend Framework для экспорта в CSV с помощью функции INTO OUTFILE mySQL - PullRequest
2 голосов
/ 30 декабря 2010

Я хочу экспортировать большой объем данных в файл CSV для загрузки пользователем с помощью Zend Framework. Есть ли способ использовать функциональность Zend_Db и использовать синтаксис «INTO OUTFILE» для вывода файла в виде csv? По сути, я хочу иметь возможность адаптировать мои модели Zend_Db для экспорта в CSV-файл, а не возвращать массив PHP. Пример синтаксиса mysql, который я хочу использовать, будет:

SELECT a,b,a+b INTO OUTFILE '/tmp/result.text' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
FROM test_table; 

Ответы [ 2 ]

0 голосов
/ 22 мая 2015

Вы можете попытаться создать базовый запрос, преобразовать его в строку и затем добавить оттуда. Преимущество в том, что вы можете использовать функциональность Zend Bind (по крайней мере, для предложения where), если вам это нужно. Вот так:

$filename = 'tmp/test.csv';
$value = 'given';

 // build base query making use of Zend´s binding feature.
$select = $this->_db->select()
    ->from(test_table, array(a,b,a+b))
    ->where('column = ?', $value)
    ->__toString()

 // append the rest of the query.
.' INTO OUTFILE "'. $filename .'"'
.' FIELDS TERMINATED BY ";"'
.' OPTIONALLY ENCLOSED BY "\\""'
.' LINES TERMINATED BY "\\n"';

 // execute query.
$this->_db->query($select);
0 голосов
/ 30 декабря 2010

Используя Zend_Db $ db, вы можете отправить любой запрос напрямую:

$db->query($exportquery);

Обратите внимание, что вам понадобится привилегия FILE для пользователя, используемого при подключении к БД, это очень высокая привилегия ( только root для некоторых версий MySQL edit : должно установить для всех баз данных на сервере). Так что это не должно быть вашим основным соединением MySQL, лучше всего было бы открыть специальное соединение с высокими привилегиями только в специальном коде, необходимом для запроса OUTFILE.

...