【結論】
・バルクインサートとは、
複数のデータを一つの命令文で登録する処理
・大量のデータは、insert文で一件づつ登録を
行うと処理が重くなるので、
そういった場合に活用する
・Railsの場合、
activerecord-importというgemで実装が可能
【目次】
【本題】
CSVファイルからのユーザー一括登録機能の実装
CSVファイルから一括してユーザー登録をする機能を
実装していたのですが、そこである課題を感じました。
それは、大量のデータを一見づつ登録すると
処理が非常に重くなるのでは無いか?という事です。
なので、その対処方法を調べていたところ、
バルクインサートという手法に行き着いてので、今回はそれをまとめます。
バルクインサートとは
バルクインサートとは、SQLの命令・処理の一つで、
通常のインサートは一件づつデータを登録するのに対して、
一つの命令で複数のデータの保存を実行できる特徴があります。
これにより、SQLの発行が一回で済むので、
処理速度が向上するというメリットがあります。
activerecord-importについて
このバルクインサートですが、Railsでは標準で対応しておらず、
activerecord-importというgemを用いて実装を行うケースが多い様です。
activerecord-importの実装方法
まずはgemを導入します。
gem 'activerecord-import'
導入後は、登録する全てのモデルインスタンスを配列に格納し、
それに対してimportメソッドを渡すだけです。
User.import(users)
これで、ユーザーの一括登録が可能です。
《今日の学習進捗(3年以内に10000時間に向けて)》
学習開始からの期間 :112日
今日までの合計時間:1054h
一日あたりの平均学習時間:9.5h
今日までに到達すべき目標時間:1023h
目標との解離:31h
「10,000時間」まで、
残り・・・「8946時間!」