How to implement bulk insert in Rails 3

Amal Kumar S picture Amal Kumar S · Dec 14, 2011 · Viewed 16.2k times · Source

I need to insert a array of emails as different records into my contacts table. How can this be done.

Eg: @email = ["[email protected]", "[email protected]", "[email protected]", ... ]

I dont want to use.

  @email.each do |email|
     @contact = Contact.new
     @contact.email = email
     @contact.save
  end

This cause n insert quires. I just need a single insert query to insert these values. How can this be done in rails 3.0.9 (and ideally MySQL). Please help

Answer

Anatoly picture Anatoly · Dec 14, 2011

activerecord-import implements AR#import

activerecord-import is a library for bulk inserting data using ActiveRecord.

see how it works:

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

Project's home is on Github and it's wiki.