Salesforce のデータ操作をもっと手軽に!DataLoader CLI を使いこなそう

Keisuke Hisamitsu

Rewa Tech

技術コラム

システム開発

はじめに

Salesforce のデータ操作を効率化してくれる頼もしいツール、DataLoader CLI (Command Line Interface) についてご紹介したいと思います。

「CLI ってちょっと難しそう…」と感じる方もいるかもしれませんが、実は一度慣れてしまえば、GUI 版よりもスピーディーに、そして自動化もしやすい強力な味方になってくれますよ!

DataLoader CLI とは

DataLoader CLI は、Salesforce のデータをコマンドラインから操作できるツールです。

GUI 版の DataLoader と同じように、データの挿入、更新、削除、エクスポートなどの操作をスクリプトやバッチファイルから実行できます。

こんな時に便利!

  • 定期的なデータ連携: 毎日決まった時間にデータをインポート/エクスポートしたい。
  • 大量データの処理: GUI 版だと時間がかかるような大量のデータを効率的に処理したい。
  • 自動化: 他のシステムとの連携処理の中で、Salesforce のデータ操作を自動化したい。
  • 開発環境でのデータ準備: 開発環境にテストデータをまとめて投入したい。

DataLoader CLI の準備 ~パスワードの暗号化~

暗号鍵を生成

パスワードやセキュリティトークンを平文で設定ファイルに記述するのはセキュリティ上好ましくありません。

DataLoader CLI では、これらの情報を暗号化して保存するための暗号鍵を作成できます。

▼コマンド

encrypt.bat -k <暗号鍵ファイルパス>

▼実行例

C:¥Salesforce¥DataLoader¥v61.1.0¥bin>encrypt.bat -k C:¥Salesforce¥DataLoader¥v61.1.0¥cliTest¥dataloader.key
Data Loader requires Java JRE 17 or later. Checking if it is installed...
Keyfile "C:¥Salesforce¥DataLoader¥v61.1.0¥cliTest¥dataloader.key" was created!

パスワードとセキュリティトークンの暗号化

作成した暗号鍵を使って、パスワードとセキュリティトークンを暗号化します。

同じく DataLoader のインストールディレクトリで以下のコマンドを実行します。

暗号化したパスワードとセキュリティトークンは後ほど使用するので、コピーしておきましょう。

▼コマンド

encrypt.bat -e <パスワード + セキュリティトークン> <暗号鍵ファイルパス>

▼実行例

パスワード:p@ssword1

セキュリティトークン:jxChYqjKYndbCafES65N7zWlV

C:¥Salesforce¥DataLoader¥v61.1.0¥bin>encrypt.bat -e p@ssword1jxChYqjKYndbCafES65N7zWlV C:¥Salesforce¥DataLoader¥v61.1.0¥cliTest¥dataloader.key
Data Loader requires Java JRE 17 or later. Checking if it is installed...
The output string of encryption is:
9b8f736958f10e463af9e29f976a20cf5bb541ec81fce06afd0d033f725fab40a46d65fd8e62b5d6bcbb53165c59bc82a396c727bdafa18deb86a7ef72f4edf6

基本的な使い方:エクスポートを例に

設定ファイル (process-conf.xml) の作成

実行する操作や接続情報などを記述した設定ファイル (process-conf.xml) を参照します。

まずはこのファイルを作成する必要があります。

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" 
  "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
  <bean id="csvAccountExtractProcess"
      class="com.salesforce.dataloader.process.ProcessRunner"
      scope="prototype">
   <description>csvAccountExtract job gets account info from salesforce and saves info into a CSV file."</description>
    <property name="name" value="csvAccountExtract"/>
    <property name="configOverrideMap">
      <map>
        <entry key="sfdc.debugMessages" value="false"/>
        <entry key="sfdc.debugMessagesFile" value="C:¥Salesforce¥DataLoader¥v61.1.0¥cliTest¥status¥sfdcSoapTrace.log"/>
        <entry key="sfdc.endpoint" value="https://login.salesforce.com"/>
        <entry key="sfdc.username" value="user@mycompany.com"/>
        <!-- password specified below is invalid, please generate one using the encrypt.bat utility -->
        <entry key="sfdc.password" value="<暗号化したパスワードとセキュリティトークン>"/>
        <entry key="process.encryptionKeyFile" value="<生成した暗号鍵ファイルパス>"/>
        <entry key="sfdc.timeoutSecs" value="600"/>
        <entry key="sfdc.loadBatchSize" value="200"/>
        <entry key="sfdc.entity" value="Account"/>
        <entry key="sfdc.extractionRequestSize" value="500"/>
        <entry key="sfdc.extractionSOQL" value="SELECT Id, Name FROM Account"/>
        <entry key="process.operation" value="extract"/>
        <entry key="process.mappingFile" value="C:¥Salesforce¥DataLoader¥v61.1.0¥cliTest¥conf¥accountExtractMap.sdl"/>
        <entry key="dataAccess.type" value="csvWrite"/>
        <entry key="dataAccess.name" value="C:¥Salesforce¥DataLoader¥v61.1.0¥cliTest¥data¥extract.csv"/>
       </map>
     </property>
   </bean>
</beans>
  • <entry key=”sfdc.entity” value=”Account”/>: 操作対象のオブジェクト(ここでは Account オブジェクト)。
  • <entry key=”sfdc.extractionSOQL” value=”SELECT Id, Name FROM Account”/>: エクスポートするデータの SOQL クエリ。
  • <entry key=”process.operation” value=”extract”/>: 実行する操作(ここではエクスポート)。
  • <entry key=”process.mappingFile” value=”C:¥Salesforce¥DataLoader¥v61.1.0¥cliTest¥conf¥accountExtractMap.sdl”/>: マッピングファイル(項目名を対応付ける場合に使用)。今回は省略することも可能です。
  • <entry key=”dataAccess.name” value=”C:¥Salesforce¥DataLoader¥v61.1.0¥cliTest¥data¥extract.csv”/>: エクスポートしたファイルの出力先。

コマンドの実行

設定ファイルを作成したら、コマンドプロンプトを開き、DataLoader のインストールディレクトリに移動して以下のコマンドを実行します。

▼コマンド

process.bat "<process-conf.xml のディレクトリパス>" <プロセス名>

▼実行例

C:¥Salesforce¥DataLoader¥v61.1.0¥bin>process.bat "C:¥Salesforce¥DataLoader¥v61.1.0¥cliTest¥conf" csvAccountExtractProcess
Data Loader requires Java JRE 17 or later. Checking if it is installed...
2024-06-21 01:54:20,158 INFO [main] process.ProcessRunner getInstance (ProcessRunner.java:310) - Initializing process engine
~省略~

結果の確認

コマンドが正常に実行されると、設定ファイルで指定した出力先ファイル(extract.csv)にエクスポートされたデータが出力されます。

その他の操作:挿入、更新、削除

DataLoader CLI では、エクスポート以外にも様々な操作が可能です。

process-conf.xml の<entry key=”process.operation” value=”extract”/>の値を変更することで、他の操作を実行できます。

  • 挿入 (Insert):  value=”insert”
  • 更新 (Update):  value=”update”
  • Upsert (Insert/Update): value=”upsert”
  • 削除 (Delete): value=”delete”

これらの操作では、通常、データが記述された CSV ファイルと、CSV ファイルの項目と Salesforce の項目を対応付けるマッピングファイル (.sdl) が必要になります。

マッピングファイル (.sdl) の作成

例えば、取引先オブジェクトにデータを挿入する場合、以下のような CSV ファイル (account_insert.csv) を用意します。

取引先名,業種,請求先住所
株式会社ABC,IT,東京
株式会社DEF,金融,大阪

そして、この CSV ファイルの項目と Salesforce の項目を対応付けるマッピングファイル (mapping_insert.sdl) を作成します。

マッピングファイルは「入力=出力」の形式で記載します。

今回は左側が CSV ファイルの項目名、右側が Salesforce の項目名になります。

#Mapping values
取引先名=Name
業種=Industry
請求先住所=BillingCity

自動化への一歩

DataLoader CLI の真価は、スクリプトやバッチファイルと組み合わせることで発揮されます。

例えば、以下のような処理を自動化できます。

  1. 外部システムからデータを CSV ファイルとしてエクスポートする。
  2. DataLoader CLI を使って、その CSV ファイルを Salesforce にインポートする。
  3. 処理結果のログファイルを指定の場所に保存する。

これらの処理を OS のスケジューラに登録すれば、定期的に自動実行することが可能です。

まとめ

今回は、Salesforce の DataLoader CLI の基本的な使い方をご紹介しました。

最初は設定ファイルの作成などに戸惑うかもしれませんが、一度設定してしまえば、GUI 版よりも効率的にデータ操作を行うことができます。

ぜひ、DataLoader CLI を使いこなして、Salesforce のデータ管理をよりスマートに、そしてより自動化されたものにしていきましょう!

Salesforce導入・活用支援のご案内

サンブリッジが提供するSalesforce導入・活用支援サービスは、お客様の現状の業務用件や目指すゴールをヒアリングし、システム設計から実装までを行います。
導入後のトレーニングまでを含むきめ細やかなサービスを一貫して実施することにより、Salesforceの活用向上と導入の効果を最大化します。

関連記事