PHP csv大量数据导出分割处理
来源:互联网 发布:我国机电产品出口数据 编辑:程序博客网 时间:2024/06/06 02:01
后台管理系统总是成百万的数据导出,使用excel导出根本不能实现,excel只支持65536,2007和2010的是1048576,所以无论哪一种都不能满足需求,csv就符合需求,不限制记录的条数,但是大量数据如果一次性处理导出,会直接导致内存溢出,脚本停止工作,所有采用分割方式导出是比较有好处的。
<?php error_reporting(0);header ( "Content-type:application/vnd.ms-excel" ); header ( "Content-Disposition:filename=" . iconv ( "UTF-8", "GBK", "topic" ) . ".csv" );//连接数据库 $link = mysql_connect('localhost','root','root') or die('连接错误');//选择数据库mysql_select_db("bbs",$link);//设置字符集mysql_query("set names utf8");//查询函数function get_res($sql,$link){$res = mysql_query($sql,$link);if(!$res){die("操作失败".mysql_error());}$arr=array();while ($row = mysql_fetch_assoc($res)) { $arr[]=$row;}return $arr;}//查询记录总数function getTotalCount(){$result = mysql_query("SELECT count(*) as count FROM medsci_edu_public_medsciedu_topic", $link);return $result['count'];} // 打开PHP文件句柄,php://output 表示直接输出到浏览器 $fp = fopen('php://output', 'a'); //表头$column_name = array('topic_id','cat_id','user_id','is_best','is_top','topic_title', 'topic_content','topic_img','hits','total_reply_count','created_time','last_updated_time','topic_status','last_reply_name'); // 将中文标题转换编码,否则乱码 foreach ($column_name as $i => $v) { $column_name[$i] = iconv('utf-8', 'gbk', $v); } // 将标题名称通过fputcsv写到文件句柄 fputcsv($fp, $column_name); $pagecount = 10000;//一次读取多少条$totalcount = getTotalCount();//总记录数$sql = "select * from medsci_edu_public_medsciedu_topic"; for ($i=0;$i<intval($totalcount/$pagecount)+1;$i++){ $data = get_res($sql." limit ".strval($i*$pagecount).",{$pagecount}",$link); foreach ( $data as $item ) { $rows = array(); foreach ( $item as $v){ $rows[] = iconv('utf-8', 'GBK', $v); } fputcsv($fp, $rows); } // 将已经写到csv中的数据存储变量销毁,释放内存占用 unset($data); //刷新缓冲区 ob_flush(); flush(); } exit;结果测试:
1 0
- PHP csv大量数据导出分割处理
- CSV导出大量数据
- php 用csv文件导出大量数据初方案
- PHP中数据导出csv
- php导出csv数据代码
- php导出大数据csv
- 大量数据导出EXCEL,原始JDBC,导出CSV
- PLSQL导出大量数据-超出excel限制,使用csv
- PLSQL导出大量数据-超出excel限制,使用csv
- PHP导出MySQL数据到CSV文件
- php导入导出CSV格式的数据
- PHP导出数据到CSV文件
- php 导出数据到csv格式
- php 导出数据保存为csv
- php导出csv出现数据丢失
- php利用参数,分时处理大量数据
- php导出CSV方法
- php导出CSV方法
- 表达式中的一些常用模式.
- 使用git客户端第一次git clone github.com代码的方法
- Linux如何实现开机启动程序详解
- sevlet 使用url请求没有反应
- 我理解的java多态
- PHP csv大量数据导出分割处理
- 逻辑地址、线性地址、物理地址和虚拟地址
- ognl概念和原理详解
- 用myeclipse2015 stable 2.0新建jsp后,无法使用jstl/core标签
- shell版俄罗斯方块最终源码
- php A*从迷宫迈向光明
- onblur 事件
- 折半查找
- SVN插件配置到myeclipse中的两种方式