この記事は
データローダをバッチモードで動かして、データをエクスポートするやり方です。
背景
ちょっと触ったので備忘のため。
実行環境
- 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
暗号化鍵ファイル作成
コマンドプロンプトで
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
の直下に置く。
暗号化パスワードを作成
Developer Edition環境にログイン
>画面右上の「プロファイルを参照」押下
>「設定」
>「私の個人情報」
>「私のセキュリティトークンのリセット」
>「セキュリティトークンのリセット」押下
で、トークンをリセットする
すると、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、名前、電話番号を取得してみる。
#Mapping values
#csvファイルヘッダ名=オブジェクト項目名
Id=Id
Name=Name
Phone=Phone
設定ファイル作成
C:\Users\{userName}\dataloader\{version}\test\conf
に、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
がある。
他の操作がしたいときにはここから設定ファイルをコピーして書き換えると楽。
ここまで作業したら、
C:\Users\{userName}\dataloader\{version}\test\conf
の中は、こんな状態になっているはず。
実行
コマンドプロンプトで
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
ファイルが作成され、取引先情報がエクスポートされている。
"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株式会社",""
参考資料
- https://developer.salesforce.com/docs/atlas.ja-jp.252.0.dataLoader.meta/dataLoader/command_line_chapter.htm
- https://note.com/keitafukui/n/n0b0a29e9e495
- https://blog.logical.co.jp/entry/2020/06/12/090000
以上、データローダをバッチモードで動かして、データをエクスポートしてみたのでした。
おしまい。