2

我希望使用 Zend Framework 将大量数据导出到 CSV 文件中供用户下载。有什么方法可以使用 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; 
4

2 回答 2

0

使用 Zend_Db $db 你可以直接提出任何请求:

$db->query($exportquery);

请注意,您需要在数据库连接上使用的用户的 FILE 权限,这是一个非常高的权限(在某些版本的 MySQL 上只有 root 编辑:必须为服务器上的所有数据库设置)。所以这不应该是你的主要 MySQL 连接,最好的办法是只在 OUTFILE 查询所需的特定代码中打开特殊的高权限连接。

于 2010-12-30T08:34:56.107 回答
0

您可以尝试构建一个基本查询,将其转换为字符串,然后从那里追加。优点是您可以使用 Zend 的绑定功能(至少对于 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);
于 2015-05-22T10:40:11.813 回答