activerecord-importによるバルクインサート

f:id:ryoutaku_jo:20190330212413p:plain

【結論】

・バルクインサートとは、
 複数のデータを一つの命令文で登録する処理

・大量のデータは、insert文で一件づつ登録を
 行うと処理が重くなるので、
 そういった場合に活用する

Railsの場合、
 activerecord-importというgemで実装が可能

【目次】

【本題】

CSVファイルからのユーザー一括登録機能の実装

CSVファイルから一括してユーザー登録をする機能を
実装していたのですが、そこである課題を感じました。

それは、大量のデータを一見づつ登録すると
処理が非常に重くなるのでは無いか?という事です。

なので、その対処方法を調べていたところ、
バルクインサートという手法に行き着いてので、今回はそれをまとめます。

バルクインサートとは

バルクインサートとは、SQLの命令・処理の一つで、
通常のインサートは一件づつデータを登録するのに対して、
一つの命令で複数のデータの保存を実行できる特徴があります。

これにより、SQLの発行が一回で済むので、
処理速度が向上するというメリットがあります。

activerecord-importについて

このバルクインサートですが、Railsでは標準で対応しておらず、
activerecord-importというgemを用いて実装を行うケースが多い様です。

github.com

activerecord-importの実装方法

まずはgemを導入します。

gem 'activerecord-import'

導入後は、登録する全てのモデルインスタンスを配列に格納し、
それに対してimportメソッドを渡すだけです。

User.import(users)

これで、ユーザーの一括登録が可能です。

《今日の学習進捗(3年以内に10000時間に向けて)》

学習開始からの期間 :112日
今日までの合計時間:1054h
一日あたりの平均学習時間:9.5h
今日までに到達すべき目標時間:1023h
目標との解離:31h
「10,000時間」まで、

残り・・・「8946時間!」