開発環境・ツール

Data Loaderをコマンドラインでバッチ実行する手順

Data Loaderは画面を開かなくても、コマンドラインからバッチで動かせます。暗号化キーの作成から実行までの手順と、Bulk APIとの使い分けを説明します。

2023.02.21

なぜコマンドラインで実行するのか

Data Loaderは通常、ウィザード画面を開いてCSVを選び、ボタンを押して実行します。ですが、この操作は人が毎回手を動かす前提です。夜間バッチやタスクスケジューラから定期的にデータを取り込みたい場合、画面操作は使えません。

Data Loaderにはコマンドラインから実行する仕組みがあります。設定ファイルを一度用意すれば、あとはprocess.bat(Windows)やprocess.sh(macOS)を呼ぶだけで、同じ取り込みを繰り返し実行できます。

用意するもの

項目内容
Data Loader本体developer.salesforce.comの「Tools」ページからインストーラを入手します。ソースを変更したい場合はgithub.com/forcedotcom/dataloaderのオープンソース版も選べます
Java実行環境JRE 17以上が必須です。 Windows版のインストーラはJavaを同梱しないため、別途インストールします
CSVファイル取り込むレコードのデータ
マッピングファイル(.sdl)CSVの列とSalesforceの項目を対応づける設定
暗号化キーとprocess-conf.xml認証情報を含む実行設定

⚠️ 以前はJava 11で動く版もありましたが、現在のData LoaderはJRE 17以上を要求します。インストール済みのJavaが古い場合は、先にJRE 17以上を入れ直してください。バージョンの確認はjava -versionで行います。

暗号化キーを作る

process-conf.xmlにはSalesforceへ接続するパスワードを書きますが、平文では書けません。先に暗号化キーを作り、そのキーでパスワードを暗号化します。

  1. Data Loaderのbinフォルダへ移動する

    コマンドプロンプト(またはターミナル)で、インストール先のbinフォルダに移動します。

  2. キーファイルを作る

    encrypt -kにキーファイルの保存先を指定して実行します。指定したパスにキーファイルが作られます。

  3. パスワードを暗号化する

    encrypt -eにログインパスワードとキーファイルのパスを指定して実行します。出力された暗号化済みの文字列を、process-conf.xmlのsfdc.passwordに使います。

コマンドプロンプトで、Data Loaderのbinフォルダへcdで移動している
暗号化コマンドは、Data Loaderのbinフォルダへ移動してから実行します。パスはご自身の環境に置き換えてください。
encrypt.bat -k "C:\dataloader\bin\dataLoader.key"
encrypt.bat -e password "C:\dataloader\bin\dataLoader.key"

Windowsでの実行例です。キーファイル作成とパスワード暗号化の2回に分けて呼びます。

⚠️ encrypt -eに渡すのは、暗号化前の平文パスワードです。出力された暗号化済みの文字列のほうをprocess-conf.xmlに書きます。平文をそのままxmlに書いてしまう間違いがよくあります。

CSVとマッピングファイルを用意する

取り込むCSVには、Salesforceの項目に対応する列を用意します。取引先を新規登録する例です。

CSVの列対応するSalesforce項目(API参照名)
名称Name
電話番号Phone
住所BillingStreet
郵便番号BillingPostalCode
URLWebsite

この対応関係を書いたものがマッピングファイルです。拡張子は.sdlで、左側=右側の形で1行ずつ書きます。

名称=Name
電話番号=Phone
住所=BillingStreet
郵便番号=BillingPostalCode
URL=Website

CSVの列名(左)とSalesforceのAPI参照名(右)の対応です。Data Loaderのウィザード画面で保存すると自動生成されます。

実行設定ファイルを作る

samples/confフォルダにあるprocess-conf.xmlをコピーし、必要な値へ書き換えます。接続先・認証情報・使うファイルのパスをすべてここにまとめます。

<?xml version="1.0" encoding="UTF-8"?>
<beans>
    <bean id="AccountInsertProcess"
          class="com.salesforce.dataloader.process.ProcessRunner"
          scope="prototype">
        <property name="name" value="AccountInsertProcess"/>
        <property name="configOverrideMap">
            <map>
                <entry key="sfdc.endpoint" value="https://xxxx.my.salesforce.com"/>
                <entry key="sfdc.username" value="xxxxxxxx"/>
                <entry key="sfdc.password" value="xxxxxxxx"/>
                <entry key="process.encryptionKeyFile" value="C:\dataloader\bin\dataLoader.key"/>
                <entry key="sfdc.entity" value="Account"/>
                <entry key="process.operation" value="insert"/>
                <entry key="process.mappingFile" value="C:\dataloader\bin\AccountInsertMap.sdl"/>
                <entry key="dataAccess.name" value="C:\Account.csv"/>
                <entry key="dataAccess.type" value="csvRead"/>
                <entry key="process.outputSuccess" value="C:\log\success.csv"/>
                <entry key="process.outputError" value="C:\log\error.csv"/>
            </map>
        </property>
    </bean>
</beans>

process-conf.xmlの例です。sfdc.username・sfdc.passwordは実際の値に置き換えます。sfdc.passwordは暗号化済みの文字列を入れます。

bean要素のid(この例ではAccountInsertProcess)は、実行時に指定する「プロセス名」です。process-conf.xmlの中に複数のbeanを並べておいて、実行時に名前で選ぶこともできます。

process.batで実行する

process-conf.xmlの準備ができたら、コマンド一つで実行できます。

cd C:\dataloader\bin
process.bat "C:\dataloader\bin" AccountInsertProcess

configdirにはprocess-conf.xmlがあるフォルダを、続けて実行したいbeanのidを渡します。

コマンドプロンプトで、process.batにフォルダのパスとプロセス名を渡している
実行コマンドです。configdirのパスのあとに、process-conf.xmlのbeanのidを渡している点を見てください。
同じprocess.batの実行コマンドを、別のウィンドウ幅で写したもの
同じコマンドの別カットです。引数はconfigdirのパスが先で、beanのidが後ろになります。
同じprocess.batの実行コマンド。パスが引用符で囲まれている
同じコマンドの別カットです。パスは引用符で囲んで渡している点に注目してください。

実行後は、process-conf.xmlで指定したprocess.outputSuccess・process.outputErrorのCSVに結果が書き出されます。成功件数とエラー件数はここで確認します。

Bulk APIを使う場合

Data Loaderは既定でSOAPベースのAPIを使いますが、件数が多い取り込みではBulk APIのほうが速く終わります。Data Loaderのウィザード画面の「設定」から「Use Bulk API」を有効にすると、以降の実行がBulk API経由になります。

⚠️ Bulk APIを有効にすると、レコードの扱いが一部変わります。未入力値の扱いや、項目の文字数がSalesforce側の上限を超えたときの挙動がSOAP版と異なります。コマンドラインでの自動実行に組み込む前に、少数件のテストで挙動を確かめてください。

ここで間違えやすい

間違い何が起きるか
JRE 17未満のままインストールするData Loaderが起動しない、または動作が不安定になります
encrypt -eの出力ではなく平文パスワードをxmlに書く認証に失敗します
process-conf.xmlをテキストエディタ以外(一部のXMLエディタ)で編集する余分なタグが自動挿入され、取り込みが失敗することがあります
process.batのconfigdirに、process-conf.xmlの無いフォルダを指定する設定ファイルが見つからずエラーになります

確認した環境

  • 2026年9月 / Salesforce Summer '26(APIバージョン67.0)時点の公式ドキュメントで、Java要件・暗号化コマンド・process-conf.xmlの設定項目を確認しています
  • パスとバージョンは、ご自身の環境に置き換えてください

まとめ

  • Data Loaderはコマンドラインからバッチ実行できます。暗号化キー・CSV・マッピングファイル・process-conf.xmlの4つを用意します
  • 現在のData LoaderはJRE 17以上が必須です。JavaはWindows版のインストーラに同梱されなくなりました
  • パスワードはencrypt -eで暗号化した文字列をprocess-conf.xmlに書きます。平文は書きません
  • 実行はprocess.bat <configdirのパス> <beanのid>の形です
  • 件数が多い取り込みはBulk APIの利用も検討してください。SOAP版とは項目の扱いが一部異なります

Salesforceの導入・運用についてご相談ください

導入前の検討から、お使いの環境の改修・運用、AIとの連携まで承ります。状況を伺ったうえで、進め方をご提案します。