2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Salesforce】データローダをバッチモードで動かしてみた【エクスポート】

Posted at

この記事は

データローダをバッチモードで動かして、データをエクスポートするやり方です。

背景

ちょっと触ったので備忘のため。

実行環境

  • Windows11
  • DeveloperEdition環境
    • サインアップが必要

  • JDK
    • バージョン:23
    • インストールが必要

  • Dataloader
    • バージョン:63.0.0
    • インストールが必要

  • Salesforce CLI
    • バージョン:2.73.9
    • インストールが必要

テスト用フォルダを作成

データローダーをインストールすると
C:\Users\{userName}\dataloader\{version}
というフォルダが作成される。
{userName}:Windowsのユーザ名
{version}:データローダーのバージョン
その配下に以下のフォルダを作成する。

test
|_conf
|_data
|_status

image.png

暗号化鍵ファイル作成

コマンドプロンプトで
C:\Users\{userName}\dataloader\{version}\bin\encrypt.bat -k
をたたく。

実行結果
C:\Users\{userName}>C:\Users\{userName}\dataloader\{version}\bin\encrypt.bat -k
Data Loader requires Java JRE 17 or later. Checking if it is installed...

*************************************************************************
**                                                                     **
**              Salesforce Data Loader                                 **
**              ======================                                 **
**                                                                     **
**  Data Loader v63 is a Salesforce supported Open Source project to   **
**  help you import data to and export data from your Salesforce org.  **
**  It requires Java JRE 17 or later to run.                           **
**                                                                     **
**  Github Project Url:                                                **
**       https://github.com/forcedotcom/dataloader                     **
**  Salesforce Documentation:                                          **
**       https://help.salesforce.com/articleView?id=data_loader.htm    **
**                                                                     **
*************************************************************************


Keyfile "run.mode=encrypt" was created!

便宜上、名前をdataLoader.keyに変えて、
C:\Users\{userName}>C:\Users\{userName}\dataloader\{version}\test
の直下に置く。
image.png

暗号化パスワードを作成

Developer Edition環境にログイン
>画面右上の「プロファイルを参照」押下
>「設定」
>「私の個人情報」
>「私のセキュリティトークンのリセット」
>「セキュリティトークンのリセット」押下
で、トークンをリセットする

image.png

すると、support.salesforce.comからこんなメールが飛んでくる

最近パスワードが変更されたかセキュリティトークンのリセットが要求されたため、新しい Salesforce セキュリティトークンを送信いたしました。API またはデスクトップクライアントでセキュリティトークンが必要な場合は、この更新されたセキュリティトークンを使用してください。

ユーザー名: {user@example.com}
セキュリティトークン (大文字と小文字を区別): {securityToken}

{user@example.com}:Developer Edition環境ログインユーザ名
{securityToken}:セキュリティトークン(24文字英数字混在)

このトークンを以下のようにコマンドに入れて、コマンドプロンプトでたたく。
C:\Users\{userName}\dataloader\{version}\bin\encrypt.bat -e {user@example.com}{securityToken} dataloader.key

パスワードとセキュリティトークンの間は空けないこと。
例えば

  • パスワード:PASSWORD
  • トークン:TOKEN

だとしたら
C:\Users\{userName}\dataloader\{version}\bin\encrypt.bat -e PASSWORDTOKEN dataloader.key
のように記述する。

実行結果
C:\Users\{userName}>C:\Users\{userName}\dataloader\{version}\bin\encrypt.bat -e {user@example.com}{securityToken} dataloader.key
Data Loader requires Java JRE 17 or later. Checking if it is installed...

*************************************************************************
**                                                                     **
**              Salesforce Data Loader                                 **
**              ======================                                 **
**                                                                     **
**  Data Loader v63 is a Salesforce supported Open Source project to   **
**  help you import data to and export data from your Salesforce org.  **
**  It requires Java JRE 17 or later to run.                           **
**                                                                     **
**  Github Project Url:                                                **
**       https://github.com/forcedotcom/dataloader                     **
**  Salesforce Documentation:                                          **
**       https://help.salesforce.com/articleView?id=data_loader.htm    **
**                                                                     **
*************************************************************************


The output string of encryption is:
{encryptedPassword}

対応付けファイル作成

C:\Users\{userName}\dataloader\{version}\test\conf
に、accountExtractMap.sdlを作成する。

記述例

今回はID、名前、電話番号を取得してみる。

accountExtractMap.sdl
#Mapping values
#csvファイルヘッダ名=オブジェクト項目名
Id=Id
Name=Name
Phone=Phone

設定ファイル作成

C:\Users\{userName}\dataloader\{version}\test\conf
に、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:\Users\{userName}\dataloader\samples\status\sfdcSoapTrace.log"/>
                <entry key="sfdc.endpoint" value="{https://myInstance.salesforce.com}"/>
                <entry key="sfdc.username" value="{user@example.com}"/>
                <!-- password specified below is invalid, please generate one using the encrypt.bat utility -->
                <entry key="sfdc.password" value="{encryptedPassword}"/>
                <entry key="process.encryptionKeyFile" value="C:\Users\{userName}\dataloader\{version}\test\dataloader.key"/>
                <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, Phone FROM Account"/>
                <entry key="process.operation" value="extract"/>
                <entry key="process.mappingFile" value="C:\Users\{userName}\dataloader\{version}\test\conf\accountExtractMap.sdl"/>
                <entry key="dataAccess.type" value="csvWrite"/>
                <entry key="dataAccess.name" value="C:\Users\{userName}\dataloader\{version}\test\data\extract.csv"/>
            </map>
        </property>
    </bean>
</beans>

書き換えが必要な箇所

  • sfdc.debugMessagesFile:ログファイルのパスを入れる。ファイル名は規定値でOK。
  • sfdc.endpoint:Developer Edition環境のURLを入れる。
  • sfdc.username:ログインに使用するユーザー名を入れる。
  • sfdc.password:暗号化パスワードの値を入れる。
  • process.encryptionKeyFile:暗号化鍵ファイルのパスを入れる。
  • process.mappingFile:対応付けファイルのパスとファイル名を入れる。
  • dataAccess.Name:エクスポート先ファイルのパスとファイル名を入れる。

(記述例の波括弧が入っているところだけ書き換えれば大丈夫…なはず)

なお
C:\Users\{userName}\dataloader\{version}\samples/conf
配下にもprocess-conf.xmlがある。
他の操作がしたいときにはここから設定ファイルをコピーして書き換えると楽。
image.png

ここまで作業したら、
C:\Users\{userName}\dataloader\{version}\test\conf
の中は、こんな状態になっているはず。
image.png

実行

コマンドプロンプトで
C:\Users\{userName}\dataloader\{version}\test
に移動し、以下をたたく。
C:\Users\{userName}\dataloader\{version}\bin\process.bat .\conf csvAccountExtractProcess

実行結果
C:\Users\{userName}\dataloader\{version}\test>C:\Users\{userName}\dataloader\{version}\bin\process.bat .\conf csvAccountExtractProcess
Data Loader requires Java JRE 17 or later. Checking if it is installed...

*************************************************************************
**                                                                     **
**              Salesforce Data Loader                                 **
**              ======================                                 **
**                                                                     **
**  Data Loader v63 is a Salesforce supported Open Source project to   **
**  help you import data to and export data from your Salesforce org.  **
**  It requires Java JRE 17 or later to run.                           **
**                                                                     **
**  Github Project Url:                                                **
**       https://github.com/forcedotcom/dataloader                     **
**  Salesforce Documentation:                                          **
**       https://help.salesforce.com/articleView?id=data_loader.htm    **
**                                                                     **
*************************************************************************


2025-04-09 15:05:02,858 INFO  [main] process.ProcessRunner getInstance (ProcessRunner.java:298) - Initializing process engine
2025-04-09 15:05:02,858 INFO  [main] process.ProcessRunner getInstance (ProcessRunner.java:313) - process.nameis specified in the command line. Loading DynaBean with id csvAccountExtractProcess from process-conf.xml located in folder C:\Users\{userName}\dataloader\{version}\test\conf
2025-04-09 15:05:02,872 INFO  [main] process.ProcessConfig getBeanFactory (ProcessConfig.java:105) - Loading process configuration from config file: C:\Users\{userName}\dataloader\{version}\test\conf\process-conf.xml
2025-04-09 15:05:03,083 INFO  [csvAccountExtract] process.ProcessRunner run (ProcessRunner.java:135) - Initializing process engine
2025-04-09 15:05:03,087 INFO  [csvAccountExtract] process.ProcessRunner run (ProcessRunner.java:155) - Logging in to: https://login.salesforce.com/
2025-04-09 15:05:03,093 INFO  [csvAccountExtract] client.PartnerClient dologin (PartnerClient.java:638) - Beginning Partner Salesforce login ....
2025-04-09 15:05:03,114 INFO  [csvAccountExtract] client.PartnerClient loginInternal (PartnerClient.java:693) - Salesforce login to https://login.salesforce.com//services/Soap/u/63.0/ as user {user@example.com}
2025-04-09 15:05:03,979 INFO  [csvAccountExtract] process.ProcessRunner run (ProcessRunner.java:158) - Setting field types
2025-04-09 15:05:05,399 INFO  [csvAccountExtract] process.ProcessRunner run (ProcessRunner.java:162) - Creating Map
2025-04-09 15:05:05,403 INFO  [csvAccountExtract] dao.DataAccessObjectFactory getDaoInstance (DataAccessObjectFactory.java:55) - Instantiating data access object: C:\Users\{userName}\dataloader\{version}\test\data\extract.csv of type: csvWrite
2025-04-09 15:05:05,404 INFO  [csvAccountExtract] controller.Controller createDao (Controller.java:284) - Checking the data access object connection
2025-04-09 15:05:09,450 INFO  [csvAccountExtract] action.OperationInfo instantiateAction (OperationInfo.java:89) - Instantiating action for operation: extract
2025-04-09 15:05:09,466 INFO  [csvAccountExtract] controller.Controller executeAction (Controller.java:176) - executing operation: extract
2025-04-09 15:05:09,466 INFO  [csvAccountExtract] action.AbstractAction executeOperation (AbstractAction.java:161) - Loading: extract
2025-04-09 15:05:09,708 INFO  [csvAccountExtract] progress.NihilistProgressAdapter setSubTask (NihilistProgressAdapter.java:84) - Processed 0 of 14 records with 0 successes and 0 errors.
2025-04-09 15:05:09,713 INFO  [csvAccountExtract] progress.NihilistProgressAdapter setSubTask (NihilistProgressAdapter.java:84) - Processed 14 of 14 records with 14 successes and 0 errors.
2025-04-09 15:05:09,713 INFO  [csvAccountExtract] progress.NihilistProgressAdapter doneSuccess (NihilistProgressAdapter.java:75) - The operation has fully completed.  There were 14 successful extractions and 0 errors.

実行結果確認

C:\Users\{userName}\dataloader\{version}\test\data
の配下にextract.csvファイルが作成され、取引先情報がエクスポートされている。

extract.csv
"Id","Name","Phone"
"001gL000002PtXgQAK","Edge Communications","(512) 757-6000"
"001gL000002PtXhQAK","Burlington Textiles Corp of America","(336) 222-7000"
"001gL000002PtXiQAK","Pyramid Construction Inc.","(014) 427-4427"
"001gL000002PtXjQAK","Dickenson plc","(785) 241-6200"
"001gL000002PtXkQAK","Grand Hotels & Resorts Ltd","(312) 596-1000"
"001gL000002PtXlQAK","United Oil & Gas Corp.","(212) 842-5500"
"001gL000002PtXmQAK","Express Logistics and Transport","(503) 421-7800"
"001gL000002PtXnQAK","University of Arizona","(520) 773-9050"
"001gL000002PtXoQAK","United Oil & Gas, UK","+44 191 4956203"
"001gL000002PtXpQAK","United Oil & Gas, Singapore","(650) 450-8810"
"001gL000002PtXqQAK","GenePoint","(650) 867-3450"
"001gL000002PtXrQAK","sForce","(415) 901-7000"
"001gL000002PtXsQAK","Sample Account for Entitlements",""
"001gL000003A7cpQAC","ABC株式会社",""

参考資料

以上、データローダをバッチモードで動かして、データをエクスポートしてみたのでした。
おしまい。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?