首页 / PHP / PHP导出大量数据到csv表
PHP导出大量数据到csv表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP导出大量数据到csv表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2252字,纯文字阅读大概需要4分钟。
内容图文
对于做后台开发的码农来说,从excel导入数据到数据库亦或者是从数据库导出数据到excel都是很常见的操作。由于经常遇到这样的场景,也因为从数据库导出数据到表格所遇到的坑有很多,所以需要另辟途径来进行这种场景优化。
如果是小量的数据导出到excel的表格的话,一般不会有太多效率和资源占用的问题,但是当数据量变得庞大了,例如20万或者50万的时候就会造成PHP处理的瓶颈,要么内存溢出要么脚本运行超时。当然PHP是相对于比较灵活的,大可在方法运行的时候单独更改超时时间和脚本运行内存。但是这都是于事无补的,一般xls的格式最大支持六万行的数据左右,所以到了六万行的时候就凉凉了。
后续查阅资料发现csv是可以支持无限行数的,只要你的电脑能支持打开就能不断的往里面塞数据。
CSV格式文件最大行数是没有上限的,在国外科学数据网站下载的CSV文件有几十G上百G,行数多大几十亿上百亿行;但是大文件CSV打开编辑的软件就基本没有,Excel、wps、openoffice紧支持打开编辑前面1048576行;snapde软件支持的行数多一些,一次可以打开编辑一两千万行的CSV数据,速度超快。
代码
<?php public function exportWarehouseManagementToExcel() { ini_set('max_execution_time', 300);// 设置PHP超时时间 ini_set('memory_limit', '2048M');// 设置PHP临时允许内存大小 $querySql = "SELECT * FROM fsyz_cpInventory WHERE 1=1";//导出所有的数据 $queryResult = $this->db->query($querySql)->result_array(); //路径 $fileName = '车管驻点业务寄递仓库管理所有数据' . date('Ymd_His') . '.csv'; $filePath = 'excel/' . $fileName; $index = 0; $fp = fopen($filePath, 'w'); //生成临时文件 chmod($filePath, 0777);//修改可执行权限 // 将数据通过fputcsv写到文件句柄 $header = array('车牌号码', '车牌类型', '所在区域', '状态', '入库时间');//设置表头 fputcsv($fp, $header); //处理导出数据 foreach ($queryResult as $key => &$val) { foreach ($val as $k => $v) { $val[$k] = $v . "\t"; if ($index == 10000) { //每次写入1000条数据清除内存 $index = 0; ob_flush();//清除内存 flush(); } $index++; } fputcsv($fp, $val); } ob_flush(); fclose($fp); //关闭句柄 header("Cache-Control: max-age=0"); header("Content-type:application/vnd.ms-excel;charset=UTF-8"); header("Content-Description: File Transfer"); header('Content-disposition: attachment; filename=' . basename($fileName)); header("Content-Type: text/csv"); header("Content-Transfer-Encoding: binary"); header('Content-Length: ' . filesize($filePath)); @readfile($filePath);//输出文件; unlink($filePath); //删除压缩包临时文件 echo $filePath; return; }
转载:
内容总结
以上是互联网集市为您收集整理的PHP导出大量数据到csv表全部内容,希望文章能够帮你解决PHP导出大量数据到csv表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。