ruby-on-rails - 使用 Rails 中的 Nokogiri 加速 XML 到 MySQL

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

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

相关文章:

javascript - 除非重新加载,否则下拉菜单在某些页面上不起作用

android - 如何使用用户名/密码通过 Devise 和 Android 对用户进行身份验证?

ruby-on-rails - SimpleForm maxlength 扩展的工作原理

ruby-on-rails - 在 Ruby 数据库中存储使用自定义类的哈希值

ruby - 在包含被测模块时使用 described_class

Ruby:动态创建新类

ruby - ruby gem 'gamebox' 的“捆绑”问题

.net - .NET 中的速度和 XML 解析 - 序列化与 XML DOM 比较?

java - XML。萨克斯风。具有默认值的属性

java - JOOX 自闭合 XML 标签