【发布时间】:2018-06-13 03:40:50
【问题描述】:
感谢您的帮助。
我的规格:
- 我有一个非常大的 CSV 文件
- 我需要处理文件并输出另一个大的 CSV 文件
我的环境:
- php7.0
- Symfony 3.4 框架
我目前的解决方案:
我正在使用Symfony Serializer 组件读取我的文件,然后处理我的文件并输出文件。都在记忆中。操作大约需要 20 分钟才能完成。
我从 Symfony 命令运行脚本。我有一个读取文件的服务和一个导出文件的服务。
改进的解决方案 1:
- 我可以像here 解释的那样,使用“LOAD DATA LOCAL INFILE”sql 查询将 CSV 文件加载到数据库表中。操作非常快
- 然后我可以处理我的数据并将其保存到另一个表中
- 然后我会使用“SELECT ... INTO OUTFILE 'file_name'”来输出文件
优势: -以SQL为中心 - 没有内存问题
缺点: -处理期间的数据库操作可能很昂贵
改进的解决方案 2:
- 我可以逐行读取CSV文件
- 我处理这条线
- 我将这一行写入输出文件
Adv:没有内存问题 Disav:可能需要很多时间。
改进的解决方案 3:
- 我可以像 here 解释的那样将 CSV 文件加载到数据库表中,使用“LOAD DATA LOCAL INFILE”sql 查询。操作非常快
- 然后我可以以 1000 个为单位处理我的数据并将它们写入文件
您会使用什么解决方案?或者您有什么更好的解决方案?
【问题讨论】: