使用Rails中的Nokogiri将XML加速到MySQL

时间:2012-11-28 16:45:43

标签: ruby-on-rails ruby xml-parsing nokogiri

我正在使用Nokogiri在我的Rails 3应用程序中将大量数据从XML提要写入我的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

Thnx提前

1 个答案:

答案 0 :(得分:1)

我想你的问题不是来自解析XML,而是你在数据库中逐个插入记录,这是非常昂贵的。

不幸的是,AFAIK Rails没有提供批量插入记录的本地方法。曾经有一颗宝石做过它,但是我不能把它放回去。

但是,“Mass inserting data in Rails without killing your performance”提供了有关如何手动执行此操作的有用见解。

如果你这样做,如果你不想以一个999亿亿行的INSERT语句结束,不要忘记批量处理你的节点。