站长资讯网
最全最丰富的资讯网站

聊聊php百万数据怎么写入csv

本篇文章给大家带来了关于PHP+csv的相关知识,其中主要介绍了php百万数据怎么通过脚本文件写入csv的相关内容,下面一起来看看怎么实现的吧,希望对大家有帮助。

聊聊php百万数据怎么写入csv

需求:

百万数据写入 csv。

框架:

N 多年前老框架,百度都搜不到了,所以写法趋近原生

分析:

数据量过大,不能用浏览器请求写入 csv 下载,所以写个脚本调取

伪代码:

//xxx - 根据自己项目替换 //调取脚本文件 exec(xxx);  //脚本文件 //设置执行时间和内存 set_time_limit(0); ini_set('memory_limit', '128M'); //循环获取 $id = 0; $data = 'xxx'.'n';//表头 while(true){     //SQL     $list = xxx WHERE id > $id ORDER BY id ASC LIMIT 10000; //每次取1w防止数据库压力大,根据sql来,我这个有联表,     if(empty($list)){         break;     }     foreach($list as $row){         $data .= '"' . $row['xxx'] . '",';         $data .= "n";         $id = $row['id'];//更新最大id     }     //追加写入csv     file_put_contents('xxx', mb_convert_encoding($data, 'gbk'),FILE_APPEND);     unset($data);//基础不好不确定初始化能不能清内存就先unset了     $data = '';//初始化 }
登录后复制

本质上就是分批写入,刚开始试验的时候是打算不把 file_put_contents 写在循环里的,后来发现数据量大的时候,几十万数据 $data 内存就超了另外如果超百万数据的话需要做分文件导出,excel 不支持打开超过 1048576 行,理论上就是加个 $all_count 参数计当前查询的总数,超过百万再加新文件。

如果有更好的方法,或者代码优化部分欢迎讨论。

推荐学习:《PHP视频教程》

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号