目前,我正在使用 LIBXML::SAXParser::Callbacks 来解析一个包含 140,000 个产品数据的大型 XML 文件。我正在使用一项任务将这些产品的数据导入到我的 rails 应用程序中。
我上一次导入只用了不到 10 个小时就完成了:
rake asi:import_products --trace 26815.23s user 1393.03s system 80% cpu 9:47:34.09 total
当前实现的问题在于 XML 中复杂的依赖结构意味着,我需要跟踪整个产品节点才能知道如何正确解析它。
理想情况下,我想要一种可以自己处理每个产品节点并能够使用 XPATH 的方法,文件大小限制了我们使用需要将整个 XML 文件加载到内存中的方法。我无法控制原始 XML 的格式或大小。我最多可以在该过程中使用 3GB 的内存。
还有比这更好的方法吗?