我正在使用 Nokogiri 将大量数据从 XML 提要写入我的 Rails 3 应用程序中的 MySQL 数据库。一切正常,但比我希望的要慢。
有什么办法可以加快这个过程吗?这是我正在使用的脚本的简化版本:
url = "http://example.com/urltoxml"
doc = Nokogiri::XML(open(url))
doc.xpath("//item").each do |record|
guid = record.xpath("id").inner_text
price = record.xpath("price").inner_text
shipping = record.xpath("shipping").inner_text
data = Table.new(
:guid => guid,
:price => price,
:shipping => shipping
)
if price != ""
data.save
end
end
提前致谢
最佳答案
我猜你的问题不是来自解析 XML,而是你将记录一条一条地插入数据库,这是非常昂贵的。
不幸的是,AFAIK Rails 不提供大量插入记录的 native 方法。曾经有一颗 gem 可以做到这一点,但我无法收回我的手。
“Mass inserting data in Rails without killing your performance ”,不过,提供了有关如何手动执行此操作的有用见解。
如果您这样做,如果您不想以单个 999 亿行 INSERT 语句结束,请不要忘记分批处理您的节点。
关于ruby-on-rails - 使用 Rails 中的 Nokogiri 加速 XML 到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13610141/