Ruby
Rails
ActiveRecord
RubyOnRails

Railsで複数行一気にInsert

メモとして残しておきます

普通に複数行Insertするとき

INSERT TO テーブル (id, name) VALUES (1, hoge1)
INSERT TO テーブル (id, name) VALUES (2, hoge2)
INSERT TO テーブル (id, name) VALUES (3, hoge3)

複数行挿入を一気に投げたいときに上のようにSQLを投げるとパフォーマンスが悪いのはわかると思います。

ActiveRecodeで書いた時おそらくこんな感じになると思います
(ざっくり頭の中で考えたことなので間違ってるかもしれません、、、)

(配列???).each do |data|
   Model.create(data)
end

でもこれを下記のようにSQLを投げる方法について書いていきます。

INSERT TO テーブル名 (id, name) VALUES (1, hoge1),(2, hoge2),(2, hoge2)

gem を入れる

下記のgemをGemfileに書いて bundle install します

gem 'activerecord-import'

書き方

     imageArray = []
     params = なんかの配列

     params.each do |data|
       array << モデル.new(なんかのモデル)
     end

    モデル.import(array)

これで複数行のInsertを一回のSQLで実行することができます。