如何在PHP中将较大的数据导出到CSV?

时间:2013-09-13 08:22:11

标签: mysql export

我想导出数千条记录,假设我有165K记录要导出为CSV。我正在做的是获取所有记录并将它们放在一个数组中,然后使用fputcsv()函数将其导出为CSV。但这样做会导致我的页面崩溃。我也设置了set_time_limit(0),但它也不起作用。我是这样做的:

QUERY-> SELECT s.id, 
               s.name, 
               s.email, 
               s.postcode, 
               s.dob
        FROM `subscribers_table` s
        WHERE s.status=1";

while(row = fetch..) {
    $myarray[] = array_data
}

$fp = fopen(..);
foreach($array as $key => $value)
    fputcsv($fp, $value);           
fclose($fp);

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

你有什么错误?好像是内存溢出。设置' memory_limit' php.ini中的指令值更大。

您想要做的事情也可以由MySQL单独完成:

SELECT s.id, 
       s.name, 
       s.email, 
       s.postcode, 
       s.dob
   INTO OUTFILE 'c:/somefile.csv'
   COLUMNS TERMINATED BY ' '
   LINES TERMINATED BY '\n'
   FROM `subscribers_table` s;

答案 1 :(得分:0)

这不是你做的解决方案, 。我的解决方案是从db进程中获取限制数据量,然后返回到数据量 就像在分页中一样。