gpt4 book ai didi

ruby-on-rails - 使用 Ruby on Rails (1.4GB) 解析非常大的 XML 文件——有没有比 SAXParser 更好的方法?

转载 作者:数据小太阳 更新时间:2023-10-29 02:13:24 26 4
gpt4 key购买 nike

目前,我正在使用 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 的内存可以用于该过程。

还有比这更好的方法吗?

Current Rake Task code:

Snippet of the XML file:

最佳答案

你能先获取整个文件吗?如果是这样,那么我建议将 XML 文件拆分成更小的 block (比如 512MB 左右),这样您就可以一次解析同时的 block (每个内核一个),因为我相信您拥有现代 CPU。关于无效或格式错误的 xml - 只需通过简单的字符串操作附加或预先添加丢失的 XML。

您也可以尝试分析您的回调方法。这是一大段代码,我很确定至少应该有一个瓶颈可以为您节省几分钟。

关于ruby-on-rails - 使用 Ruby on Rails (1.4GB) 解析非常大的 XML 文件——有没有比 SAXParser 更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2860351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com