3

我正在使用 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

提前谢谢

4

1 回答 1

1

我猜你的问题不是解析XML,而是你在数据库中一一插入记录,这非常昂贵。

不幸的是,AFAIK Rails 没有提供大量插入记录的本地方式。曾经有一颗宝石可以做到这一点,但我无法收回手。

不过, “在 Rails 中大量插入数据而不影响性能”提供了有关如何手动执行此操作的有用见解。

如果您采用这种方式,如果您不想以单个 999-bazillion-rows INSERT 语句结束,请不要忘记批量处理您的节点。

于 2012-11-28T18:07:47.537 回答