今回は、「データローダ」と「データインポートウィザード」、この2つを様々な角度から徹底比較してみました。
管理者や開発者としてデータを扱う時の参考になれば幸いです。
データローダ/インポートウィザードとは
Salesforceを扱っていれば、システムに一括で大量データを投入したい、もしくは更新したいということがあると思います。
そこで使用するのが「データローダ」と「データインポートウィザード」という機能になります。
どちらも大量データを取り扱うことに長けていますが、できることできないことや制限事項などに違いがあるため、場面に応じて使い分ける必要があります。
ツールの使用方法
データインポートウィザードはSalesforce内部の機能です。
設定 からデータインポートウィザードを検索することで使用できます。

一方、データローダは、外部アプリケーションなのでPCにインストールして使用します。
データローダのインストール手順についてはこちらをご覧ください。
参考:「データローダのインストール手順」
データ処理
データローダとインポートウィザードとでは、可能なデータ処理が異なります。
データ処理 | データローダ | データインポートウィザード |
---|---|---|
Insert | 〇 | 〇 |
Update | 〇 | 〇 |
Upsert | 〇 | 〇 |
Delete | 〇 | × |
Export | 〇 | × |
データを作成したり、更新したりは両者ともに可能ですが、削除とエクスポートについてはデータローダのみの機能となります。
実行権限
インポートウィザードとデータローダを使用するためには、プロファイルや権限セットで特定の権限を付与する必要があります。
例えば、インポートウィザードでカスタムオブジェクトを作成、編集するためにはプロファイル設定の「カスタムオブジェクトのインポート」とカスタムオブジェクトに対する「作成」、「更新」権限が必要となります。
詳しくはこちらをご覧ください。
参考:「レコードをインポートするのに必要な権限は何ですか?」
一方、データローダを使用するためにはユーザに以下の権限が必要です。
これらはプロファイルで設定します。
- オブジェクトに対する「参照」、「作成」、「編集」、および「削除」
- 「API の有効化」
- 「Bulk API の物理削除」 (Bulk API を使用してレコードを物理削除するようにデータローダを設定している場合のみ)
データローダの利用にはオブジェクトに対する「参照」、「作成」、「編集」、および「削除」権限が必要なので、基本的にはシステム管理者での利用が想定されますね。
サポートされるオブジェクト
インポートウィザードでは、以下のオブジェクトに対応しています。
- 取引先
- 取引先責任者
- リード
- ソリューション
- キャンペーンメンバー
- カスタムオブジェクト
かなり対応オブジェクトの数に制限がある印象ですね。
一方、データローダは、全オブジェクトに対応しているため、この点に関して言えばデータローダに軍配が上がりますね。
商談やファイルの一括での作成もデータローダでなら可能です。
取引先と取引先責任者のインポート
インポートウィザードでは、取引先と取引先責任者を1回のインポートでまとめて作成できます。

以下のようなCSVファイルを作成し、項目を対応付けてインポートすると取引先と取引先責任者が同時に作成されます。

もちろん項目の対応付けを行わないようにすれば、取引先のみ、取引先責任者のみの作成、更新も可能です。
それに対し、データローダでは1オブジェクトごとにしかデータのインポートができないため、取引先と取引先責任者を作成する場合は、それぞれ別々に作成する必要があります。
項目のマッピング方法
インポートウィザードにせよ、データローダにせよ、データをインポートする際はcsvファイルの項目とSalesforce内の項目をマッピング(対応付け)させる必要があります。
インポートウィザードでは表示ラベルをcsvファイルのヘッダーと対応させます。
対応付けは最大10個行うことができます。

一方、データローダでは項目のAPI名をcsvファイルのヘッダーとマッピングします。

処理レコード数の上限
インポートウィザードでは、50,000 件まで一括処理が可能です。
データローダは5,000,000 件まで一括処理可能 (BULK API 使用時)です。
バッチサイズ
バッチサイズとは、1トランザクションあたりに処理されるレコード数のことです。
インポートウィザードではこのバッチサイズを変更することはできません。
データローダでは「設定」から最大200までバッチサイズを変更することができます。

[Bulk APIを使用]オプションがオンの場合、最大値は 10,000 です。
重複検知
インポートウィザードには重複の検知機能が備わっています。
例えば、下画像のcsvのように同じレコードを更新するようなデータを用意します。

インポートウィザードで更新処理を行うと、下のように重複エラーになります。

それに対し、データローダには重複検知機能は備わっていないため、上のような更新データでも問題なくレコードが更新されます。
インポート時のエラーが起きた時の違い
インポートするデータの中にエラーが発生するデータが含まれている場合、インポートウィザードではエラーとなるレコード以外のレコードが正常にインポートされます。
例えば、2件レコードをインポートして、1件エラーレコードを含んでいる場合、もう1件は正常にインポートされます。

データローダの場合、投入時に Apex トリガが実行されるかどうかによるみたいです。
データ投入時にApexトリガが実行されない場合は、投入データにエラーレコードが含まれていたとしてもそれらのレコードを除く他のレコードは正常に処理されます。
この点はインポートウィザードと同じですね。
一方、データ投入時にApexトリガが実行さる場合は、エラーレコードを含んでいる単位バッチ内のすべてのデータがロールバックされる、こともあるらしいです。。。
Help記事を見てもあいまいな表現になっていました。
例えば、以下のケースを考えます。
- レコードの全処理件数 [600]
- データローダのバッチサイズ [200]
- エラーとなるレコード [201件目, 250件目]
全処理レコードが「600件」でバッチサイズが「200」の場合、以下のように分割されて処理されます。
「1~200件」、「201~400件」、「401~600件」
上記のような状況で 「201件目」と「250件目」 にエラーとなるレコードがあり、トリガの処理が実行される場合には、「201 ~ 400件目」のデータがすべてロールバックされます。
そして「1~200件」、「401~600件目」は正常に処理されます。

プロセスビルダーやフローが続く場合はどのような挙動になるんですかね。またぼちぼち調べてみます。
スケジュール設定
インポートウィザードでは時間を指定して一括処理を行うことはできません。
実行したらすぐに処理が開始されます。
一方、データローダでは手順がそれなりに複雑なようですが、時間指定や週次で処理を実行することが可能とのことです。
まだ試したことがないのでこちらも別途チェレンジしてみます。
nullで更新
既存のデータをnullで更新したい場合、インポートウィザードでは下画像のように「#N/A」を使用します。


これで指定した項目がnullに更新されます。
データローダの場合は、まず設定の「Insert null values」にチェックを入れます。


そしてnull更新したい項目は空白のままでcsvファイルを作成し、データローダで更新処理を行います。


まとめ
今回は、「データローダ」と「データインポートウィザード」の違いについてでした。
Salesforce的にはデータローダを推奨しているようですが、インポートウィザードはツールをインストールする必要がなく、日本語の案内も備わっているためユーザフレンドリーといえるでしょう。
ただ、できることできないことが両者でだいぶ違うので、やはり用途によって使い分けが必要ですね。
また、データローダには今回紹介した機能以外にも様々な機能が備わっているので、また記事に起こしたいと思います。
今回は以上です。
コメント