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