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

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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 9
晓鹤

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

3个月前 评论

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

3个月前 评论

@yuesir

图片

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

3个月前 评论
hanyunmuyu 3个月前

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

3个月前 评论

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

3个月前 评论

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

3个月前 评论
命中水

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

3个月前 评论

可以试下yield生成器

3个月前 评论

file

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

3个月前 评论

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