将表里面的 1000w 条数据导出到 txt,怎样导出速度更快?

送礼表send_gifts,按月分表,例如:send_gift_2019_5。
现要将40个月近1000w条数据导出到txt。
各位大佬有什么好的解决方案吗?
下面是分表查询的数据
将表里面的1000w条数据导出到txt,怎样导出速度更快?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 9
yuesir

能问下为啥要导出到 txt 里面么,如果导出文件过大的话很多可能有现有的工具都打不开,还得额外借助 BigQuery 之类的工具。另外建议说下具体上面的写法碰到的问题,这样可以获得更有针对性的解答。

2周前 评论

命令行使用chunk获取,然后放入txt

1周前 评论

@yuesir

图片

这个是导出方法,出现的问题就是 导出的速度比较慢,最后还没导出成功

1周前 评论
hanyunmuyu: 不要一条一条的写,你可以一次写几百条,几千条数据,比如你foreach几百几千条数据拼接好字符串写入到文件 1周前

@mysql 使用的是chunk,但是导出的速度太慢,最后还导出不成功

1周前 评论

除了 chunk,可以考虑下用 PHP stream 和迭代器

1周前 评论

chunk 在数据量很大的情况下效率是很低的。建议使用 chunkById 方法通过主键切分数据来查询。另外,写这么多数据到同一个文件可能还打开不了......我觉得最好分几个文件。

1周前 评论
命中水

这种场景下,不建议使用file_get_content,好像file_get_content 每次使用都要打开文件资源。
可以采取一般的写文件
fopen配合fwrite

1周前 评论

可以试下yield生成器

1周前 评论

file

这样1000W数据大概用了50s写入文件

1周前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

社区文档:

将托管在 packagist.org 和 github.com 的扩展包使用国内 CDN 加速
GitHub Laravel 扩展包 TOP 250
速查表方便快速查询框架功能,支持手机访问,支持中英文版本
Laravel 中文文档,由社区用户翻译和维护,将会保持一直更新
此文档的目的,就是为了提高技术团队的凝聚力、一致性和生产效率。
开发环境的部署,开发者工具的选择,适用于 Mac 和 Windows。
浓缩过后的精华
Laravel Nova 后台管理面板文档的中文翻译
Lumen 中文文档,由社区用户翻译和维护,将会保持一直更新
Laravel 下知名扩展包 Dingo API 的中文文档,Laravel API 开发必知必会