如何在Rails 3中实现批量插入

Ama*_*r S 23 activerecord ruby-on-rails arel ruby-on-rails-3

我需要将一组电子邮件作为不同的记录插入到我的联系人表中.如何才能做到这一点.

Eg: @email = ["a@b.com", "c@d.com", "e@f.com", ... ]
Run Code Online (Sandbox Code Playgroud)

我不想用.

  @email.each do |email|
     @contact = Contact.new
     @contact.email = email
     @contact.save
  end
Run Code Online (Sandbox Code Playgroud)

这导致n插入quires.我只需要一个插入查询来插入这些值.如何在rails 3.0.9(以及理想的MySQL)中完成.请帮忙

Ana*_*oly 50

activerecord-import实现AR#import

activerecord-import是一个使用ActiveRecord批量插入数据的库.

看看它怎么运作:

books = []
10.times do |i| 
  books << Book.new(:name => "book #{i}")
end
Book.import books
Run Code Online (Sandbox Code Playgroud)

Project的主页位于Github,它是wiki.

  • 这是一个很棒的宝石,我很高兴你指出来了! (6认同)
  • 我成功地使用这个gem来减少260k行数据迁移,从1小时减少到6分钟.使用Postgres. (3认同)