Salesforce データローダ完全ガイド:管理者向け徹底解説

背景と適用シナリオ

Salesforce 管理者の日常業務において、データのインポート、エクスポート、更新、削除は避けて通れない重要なタスクです。特に、数十万、数百万件といった大量のデータを扱う場合、手作業や標準のインポートウィザードでは限界があります。ここで登場するのが、Data Loader (データローダ) です。

Data Loader は、Salesforce が提供する強力なクライアントアプリケーションで、プログラムの知識がなくても大量のデータ操作を効率的に実行できます。CSV (Comma-Separated Values) 形式のファイルを使用して、Salesforce のオブジェクトに対して一括でレコードの作成 (Insert)、更新 (Update)、作成または更新 (Upsert)、削除 (Delete)、そしてエクスポート (Export/Export All) を行うことができます。

Salesforce には「データインポートウィザード」という簡易的なツールもありますが、Data Loader は以下のようなシナリオで特にその真価を発揮します。

適用シナリオ

  • 初期データ移行: 他のシステムから Salesforce へ初めてデータを移行する際、大量の取引先、取引先責任者、商談などのデータを一括で投入する場合。
  • 大規模なデータクレンジング: 既存の数万件のレコードに対して、表記の揺れを統一したり、不正確な情報を一括で更新したりする場合。
  • 定期的なデータ連携: 外部のシステムから定期的にエクスポートされるデータを、Salesforce に自動で取り込むバッチ処理を構築する場合(コマンドラインインターフェースを利用)。
  • データのアーカイブ: 不要になった古いレコードを Salesforce からエクスポートしてバックアップとして保管し、その後 Salesforce から一括削除する場合。
  • データインポートウィザードが対応していないオブジェクトの操作: ユーザーオブジェクトや納入商品など、一部の標準オブジェクトやカスタムオブジェクトを操作する場合。

このように、Data Loader は Salesforce 管理者がデータ管理をプロフェッショナルに行うための必須ツールと言えるでしょう。


原理説明

Data Loader がどのようにして Salesforce と連携し、データを操作するのか、その基本的な仕組みを理解することは、トラブルシューティングやより高度な活用に繋がります。

Data Loader は、あなたのコンピュータにインストールして使用するスタンドアロンのアプリケーションです。このアプリケーションは、内部で Salesforce の API (Application Programming Interface, アプリケーションプログラミングインターフェース) を呼び出すことで、データの送受信を行っています。主に以下の2種類の API が利用されます。

  • SOAP API: リアルタイムでの処理に適しており、比較的小規模なバッチ(デフォルトでは200レコード)でデータを処理します。Data Loader のデフォルト設定ではこちらが使用されます。
  • Bulk API: 大量のデータ(数万件以上)を非同期で処理するために最適化された API です。データをバッチに分割し、並行して処理するため、非常に高速です。Data Loader の設定で Bulk API を使用するよう切り替えることができます。

データ操作の一般的なフローは以下のようになります。

  1. 準備: 管理者は操作したいデータを含む CSV ファイルを用意します。各列が Salesforce の項目(フィールド)に対応します。
  2. ログイン: Data Loader を起動し、Salesforce 組織のユーザー名とパスワード(またはセキュリティトークン)を使ってログインします。
  3. 設定: 実行したい操作(Insert, Update など)、対象の Salesforce オブジェクト、そして使用する CSV ファイルを選択します。
  4. マッピング: CSV ファイルの列見出しと、Salesforce オブジェクトの項目名を対応付け(マッピング)します。
  5. 実行: Data Loader は設定に従い、CSV ファイルのデータを一行ずつ(またはバッチ単位で)読み込み、API リクエストを生成して Salesforce に送信します。
  6. 結果の確認: 処理が完了すると、Data Loader は「成功ログ」と「エラーログ」の2つの CSV ファイルを生成します。エラーログには、どのレコードがなぜ失敗したのかという理由が記録されており、これをもとにデータの修正と再実行が可能です。

さらに、Data Loader には GUI (Graphical User Interface) モードと CLI (Command-Line Interface, コマンドラインインターフェース) モードがあります。GUI は直感的な操作が可能で、手動での一回限りのタスクに適しています。一方、CLI はコマンドや設定ファイルを使って Data Loader を実行するモードで、Windows のタスクスケジューラや cron などと組み合わせることで、夜間のデータ連携などを自動化することが可能です。


コマンドラインインターフェース (CLI) の設定例

Data Loader の CLI を利用することで、データ処理を自動化できます。ここでは、外部システムからエクスポートされた取引先 (Account) データを、外部 ID をキーにして毎晩 Salesforce に取り込む(Upsert する)シナリオを想定した設定ファイルの例を示します。

CLI の実行には、`process-conf.xml` という設定ファイルにプロセスの詳細を定義する必要があります。

process-conf.xml の設定例

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="accountUpsertProcess"
          class="com.salesforce.dataloader.process.ProcessRunner"
          singleton="false">
        <!-- このプロセスを実行するための設定を定義します -->
        <property name="configOverrideMap">
            <map>
                <!-- Salesforce への接続エンドポイント。本番環境の場合は login.salesforce.com -->
                <entry key="sfdc.endpoint" value="https://login.salesforce.com"/>

                <!-- 実行ユーザーのユーザー名 -->
                <entry key="sfdc.username" value="your.username@example.com"/>

                <!-- 暗号化されたパスワード。CLIの暗号化機能で事前に生成します -->
                <entry key="sfdc.password" value="YOUR_ENCRYPTED_PASSWORD"/>

                <!-- Upsert操作のキーとなる外部ID項目。API参照名で指定します -->
                <entry key="sfdc.externalIdField" value="External_System_ID__c"/>

                <!-- 操作対象のSalesforceオブジェクト -->
                <entry key="sfdc.entity" value="Account"/>

                <!-- 実行する操作 (insert, update, upsert, delete, hardDelete, extract) -->
                <entry key="process.operation" value="upsert"/>

                <!-- CSV列とSalesforce項目のマッピングを定義したSDLファイルのパス -->
                <entry key="process.mappingFile" value="C:\dataloader\conf\accountMap.sdl"/>

                <!-- 読み込むデータソースのタイプ -->
                <entry key="dataAccess.type" value="csvRead"/>

                <!-- 読み込むCSVファイルのパス -->
                <entry key="dataAccess.name" value="C:\dataloader\data\accounts_to_upsert.csv"/>

                <!-- Bulk API を使用するかどうか。大量データの場合は true を推奨 -->
                <entry key="sfdc.useBulkApi" value="true"/>
            </map>
        </property>
    </bean>
</beans>

上記の XML ファイルを準備し、マッピングファイル (`accountMap.sdl`) とデータファイル (`accounts_to_upsert.csv`) を指定の場所に配置した後、コマンドプロンプトから `process.bat` (Windows) または `process.sh` (Mac/Linux) を実行することで、この `accountUpsertProcess` が実行されます。


注意事項

Data Loader は非常に強力なツールですが、その力を正しく使うためにはいくつかの注意点を理解しておく必要があります。

権限 (Permissions)

Data Loader を使用するユーザーには、プロファイルまたは権限セットで「API 有効 (API Enabled)」権限が必要です。また、操作対象のオブジェクトに対する適切な CRUD (Create, Read, Update, Delete) 権限と、アクセス対象の項目に対する項目レベルセキュリティ (Field-Level Security) が必要です。これらの権限が不足していると、エラーが発生します。

API 制限 (API Limits)

Data Loader の操作は、Salesforce 組織の API コール数を消費します。組織ごとに24時間あたりの API コール数には上限が定められており、この上限を超えると API を利用するすべての連携が停止してしまいます。特に SOAP API モードで大量のデータを処理すると、多くの API コールを消費します。50,000件を超えるような大量のデータを扱う場合は、API コールの消費効率が良い Bulk API モードを使用することを強く推奨します。

データ準備 (Data Preparation)

処理の成否は、元となる CSV ファイルの品質に大きく依存します。

  • 文字コード: 日本語を含む場合は、`UTF-8` などの適切な文字コードでファイルを保存してください。
  • ID の形式: レコードを更新または関連付ける際は、必ず 18 桁の Salesforce ID を使用してください。レポートなどからエクスポートした 15 桁の ID は、大文字小文字を区別しないシステム(例: ExcelのVLOOKUP関数)で問題を引き起こす可能性があります。
  • 日付/時刻の形式: 日付や日時項目は `YYYY-MM-DD` または `YYYY-MM-DDThh:mm:ss.sssZ` といった特定の形式に従う必要があります。
  • Boolean 型: チェックボックス項目は `true` / `false` または `1` / `0` で表現します。

エラー処理 (Error Handling)

一度の処理で全件成功することは稀です。必ずエラーファイルを確認し、失敗の原因を特定する習慣をつけましょう。一般的なエラー原因には、必須項目の欠落、入力規則 (Validation Rule) 違反、重複ルールの抵触、不正なリレーション ID などがあります。エラーファイルの内容を修正し、そのファイルを使って再度 Data Loader を実行することで、失敗したレコードのみを効率的に再処理できます。

トリガーと自動化 (Triggers and Automation)

Data Loader によるレコードの作成や更新は、ユーザーインターフェースからの操作と同様に、Apex トリガー、フロー、プロセスビルダー、入力規則、ワークフロールールなどの自動化プロセスを起動します。大量のデータを一度に処理すると、これらの自動化が連鎖的に実行され、組織のパフォーマンスに大きな影響を与えたり、CPU 時間制限などのガバナ制限に抵触したりする可能性があります。大規模なデータ移行を行う際は、影響を考慮し、可能であれば一時的に関連する自動化を無効化することも検討すべきです(ただし、ビジネスロジックに影響がないか慎重な判断が必要です)。


まとめとベストプラクティス

Data Loader は、Salesforce 管理者がデータと向き合う上で最も信頼できるパートナーの一つです。その機能を最大限に活用し、安全に運用するためには、以下のベストプラクティスを遵守することが重要です。

  1. 必ず Sandbox でテストする: 本番環境で実行する前には、必ず Full Sandbox や Partial Copy Sandbox などのテスト環境で、同じデータ量と手順でリハーサルを行ってください。
  2. 事前にデータをバックアップする: 特に更新や削除といった破壊的な操作を行う前には、Salesforce の週次エクスポート機能などを使って必ずデータのバックアップを取得してください。
  3. 適切な API を選択する: 少量のデータやリアルタイム性が求められる場合は SOAP API を、数万件以上の大量データを扱う場合は Bulk API を選択します。
  4. 適切なバッチサイズを設定する: バッチサイズが大きすぎるとガバナ制限に抵触しやすくなり、小さすぎると API コール数が増えて処理に時間がかかります。最初は小さなサイズ(例: 200)から始め、組織の状況を見ながら調整していくのが良いでしょう。
  5. ログファイルを必ず確認する: 処理が終わったら「成功」「失敗」の件数だけを見るのではなく、エラーログの中身を詳細に確認し、なぜエラーが起きたのかを理解することが、データ品質の向上に繋がります。
  6. 繰り返し作業は CLI で自動化する: 毎日・毎週といった定期的なデータ連携タスクは、CLI を活用して自動化することで、作業の効率化と人為的ミスの削減を実現できます。

これらのプラクティスを実践することで、あなたは Salesforce 管理者として、自信を持ってデータ管理業務を遂行できるようになるでしょう。

コメント