我正在使用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提前
答案 0 :(得分:1)
我想你的问题不是来自解析XML,而是你在数据库中逐个插入记录,这是非常昂贵的。
不幸的是,AFAIK Rails没有提供批量插入记录的本地方法。曾经有一颗宝石做过它,但是我不能把它放回去。
但是,“Mass inserting data in Rails without killing your performance”提供了有关如何手动执行此操作的有用见解。如果你这样做,如果你不想以一个999亿亿行的INSERT语句结束,不要忘记批量处理你的节点。