我有一个 17gb 的 xml 文件。我想将它存储在 MySQL 中。我在 php 中使用 xmlparser 进行了尝试,但它说超过了 30 秒的最大执行时间并且只插入了几行。我什至尝试在 python 中使用元素树,但它占用了大量内存,导致 2 GB 内存的笔记本电脑出现内存错误。请提出一些有效的方法来做到这一点。
问问题
211 次
2 回答
1
您需要使用 Pythonxml.sax
或lxml.etree的iterparse()
。
这些是解析 xml 的“事件驱动”方法。你告诉解析器你想监听哪个“节点”,它每次找到那个节点时都会触发一个函数。
这将使您的内存使用率非常低,并避免您遇到的错误。
于 2013-09-22T16:16:55.260 回答
0
我想说,关闭 PHP 中的执行时间限制(例如使用 CLI 脚本)并耐心等待。如果你说它开始从一个 17 GB 的文件向数据库中插入一些东西,那么它实际上已经做得很好了。没有理由为这样的一次性工作加速它。(也增加内存限制,以防万一。默认 128 Mb 并没有那么多。)
于 2013-09-22T16:17:52.050 回答