我有一个巨大的文件,我想阅读,所以我可以填充我的MySQL数据库。我试图使用PHPExcel库,但是当我想加载文件时出现错误:
致命错误:允许的内存大小为1610612736字节耗尽(尝试过 在C:\ Wamp \ www \ Classes \ PHPExcel \ Worksheet.php上分配22个字节) 第964行
我已经增加了memory_limit
文件中php.ini
的值,但仍然不够。我的Excel文件超过60 MB(5 109 719个单元格)。
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
使用PHPExcel读取500万个单元格是一个棘手的问题。您可以尝试使用Mark提到的单元缓存或分块加载技术。请查看此处的文档:https://github.com/PHPOffice/PHPExcel/blob/develop/Documentation/markdown/Overview/04-Configuration-Settings.md
我还尝试使用这些技术使用PHPExcel读取数百万个单元格,但这会成为性能问题(而不是内存问题)。阅读这么多细胞需要永远。因此,您也可以尝试使用Spout:https://github.com/box/spout。读取500万个单元只需要几MB的内存,需要20到40分钟。
答案 1 :(得分:0)
如果您没有某些特殊功能,那么将文件导出为CSV并将其直接导入MySQL会更好。 5百万个单元格很多,使用PHP需要很长时间。
Importing a csv into mysql via command line
我不是一个很大的Java粉丝,但是你得到了一个好的lib。
POI在大文件上表现良好,并且比PHP工作得更好。如果您无法将文件转换为CSV并阅读它。你应该看看POI。