tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:【大量データ処理】データローダとBulk APIで一括データ登録

f:id:tyoshikawa1106:20141128003041p:plain


データローダで大量データを登録する場合は、Bulk APIを使用します。Bulk APIは設定画面の「Use Bulk API」にチェックをつけると使用できます。チェックをつけるとBach Sizeが2000件に自動で変更されます。これで通常のINSERT処理よりも効率よく登録処理が実行されます。

f:id:tyoshikawa1106:20141128004156p:plain


ちなみに「Use Bulk API」の下にあるチェックボックスでは、並列処理と順次処理の切り替えが可能です。通常は並列処理で行いますが、順番に処理しないといけないケースの場合はチェックをつけて順次モードを有効にして対応します。


その他各設定の詳細はこちら

データローダの設定


今回、大量データ処理の検証は250MBまで使える組織で試してみます。

f:id:tyoshikawa1106:20141128005054p:plain


『1MB = 1000KB』でレコード1件あたり『約2KB』となります。『250000 / 2 = 125000』となるので余裕をみて123000件の登録処理を行ってみることにしました。


f:id:tyoshikawa1106:20141128005812p:plain


登録対象は取引先オブジェクトで対象項目はName項目と外部ID項目となるAccountCodeの2項目です。

f:id:tyoshikawa1106:20141128005905p:plain


実際に動かしてみて123000件、問題なく登録することができました。

f:id:tyoshikawa1106:20141128010642p:plain


バッチサイズが2000になっているため短時間で完了しました。ストップウォッチで計測してみたところ約3分程で登録できていました。

f:id:tyoshikawa1106:20141128010531j:plain:w300


組織のディスク使用量で上限近くまで登録されていることも確認できました。

f:id:tyoshikawa1106:20141128011300p:plain


実際に大量データの処理を行う場合は対象項目が多くなったり、トリガーやワークフローが入っていたりして、もう少し時間がかかるかと思いますが、シンプルな登録処理なら12万件ぐらいあってもこんな感じで簡単に登録できました。


大規模データの取り扱いとしてSalesforce Japan Blogにベスト・プラクティスがまとめられています。理想はトリガーやワークフローは無効化してから登録処理を行うことで効率よく処理を実行できるとのことです。


Bulk APIを使った一括データ登録処理の実行時間はこんな感じでした。


最後にBulk APIについてはこちらも参考になります。

Salesforce Help - Bulk API が有効化されたデータローダの動作

Bulk API Limits