Rubyで
バルクインサート

1
バルクインサート

2
要約すると・・・

• 1回のコンテキストスイッチで大量のレ
コードを処理すること

3
Rubyでやるには

4
大体どっちか。。。
• Ruby上からSQLコマンドを実行
• Gem(Ruby用のライブラリ)を使う
•

そもそもRubyを使う選択肢が(ry

5
楽にやりたいので
Gemを使おう!!

6
ORM用Gem
• ActiveRecord
• Datamapper
• Sequel
• og
7
バルクインサート出来
そうな他に無いのか!?

8
あった!!
• activerecord-import
• https://github.com/zdennis/activerecordimport

9
使ってみる!!

10
モデル
• モデル定義

11
実装してみる
• これだけで使えた!!
• importメソッドにモデルの配列を指定

12
他の引数は?
• :validate
•

trueにするとinsert前に値の検証を実施する
(デフォルトはtrue)

• :on_duplicate_key_update
•

主キー、一意制約違反があるカラムを指定
することで、指定カラムを更新できるよう
にする
13
パフォーマンスは?

14
こっちじゃないよw

15
10万件処理した!!
1. 42.946298931 (sec)
2. 50.506361978 (sec)
3. 52.728926818 (sec)
4. 51.085752657 (sec)
5. 50.447273085 (sec)

16
50sec程度
結構、使える!!

17
ぜひ使ってみてくだ
さい!!

18