我有一个大型数据表(在mongodb中),有超过500万行。我想将数据导出为 csv 并直接在浏览器中输出 csv。我正在使用PHP。
对于少于一百万行的较小记录集,以下代码可以完美运行。
set_time_limit(0);
$output = fopen("php://output",'w') or die("Can't open php://output");
header("Content-Type:application/csv");
header("Content-Disposition:attachment;filename=auditresults_$i.csv");
fputcsv($output, array('id','createdon','colum1','column2','column3','colum4'));
foreach ($items as $item) {
fputcsv($output, $item)
}
fclose($output) or die("Can't close php://output");
但是,当我导出大型数据集(例如 500 万行)时,上面的代码失败了。
我想看看是否有办法将上述结果分成 100,000 行的批次并通过浏览器输出多个 csv 文件。
您只能对请求发送一个响应。
解决方案可能是在您网站上的临时文件夹中输出多个 csv 文件,并将可下载的 url 链接发送到这些文件作为响应。