データローダとは
データローダは、データを一括でインポートまたはエクスポートするためのクライアントアプリケーションです。Salesforce レコードの挿入、更新、削除、またはエクスポートに使用できます。
データのインポート時には、カンマ区切り値 (CSV) ファイルまたはデータベース接続からデータローダの参照、抽出、および読み込みを実行できます。データのエクスポート時には、CSV ファイルが出力されます。
データローダは、次の 2 通りの方法で使用できます。
・ユーザインターフェース — ユーザインターフェースを使用する場合、対話形式で作業して、設定パラメータ、インポートとエクスポートに使用する CSV ファイル、インポートファイルの項目名と Salesforce の項目名を対応付ける項目の対応付けを指定します。
・コマンドライン (Windows のみ) — コマンドラインを使用する場合は、ファイルの設定、データソース、対応付け、アクションを指定します。これにより、自動処理のためにデータローダを設定できます。
データローダには、次の主な特長があります。
・対話形式で使用するための使いやすいウィザードを持つインターフェース
・自動バッチ操作のための代替コマンドラインインターフェース (Windows のみ)
・5 百万レコードまでの大規模ファイルにも対応
・ドラッグアンドドロップによる項目の関連付け
・カスタムオブジェクトを含む全オブジェクトのサポート
・Salesforce および Database.com の両方でのデータ処理に使用できる
・CSV ファイル形式での詳細な成功またはエラーログ
・組込み型 CSV ファイル参照アプリケーション
・Windows および Mac のサポート
データローダバッチ作成方法
今回はデータローダインポート用のバッチ作成方法を説明します。
具体的なやり方は下記を参照してください。
環境
OS : Windows10
Java Zulu OpenJDK バージョン 18
⇒ https://www.azul.com/downloads/?os=windows
DataLoder 54.0.0バージョン
⇒ https://github.com/forcedotcom/dataloader
パスワード暗号化
- 暗号鍵生成
java -cp dataloader-54.0.0-uber.jar com.salesforce.dataloader.security.EncryptionUtil -k ./conf/dataloader.key
- 暗号鍵を使用して、パスワードを暗号化する
java -cp dataloader-54.0.0-uber.jar com.salesforce.dataloader.security.EncryptionUtil -e パスワード .conf/dataloader.key
データローダバッチの構成
├─start.bat ⇒ 実行ファイル(手動実行可能)
│─dataloader-54.0.0-uber.jar ⇒ データローダJAR
├─conf
│ map.sdl ⇒ オブジェクトのマッピングファイル
│ config.properties ⇒ データローダ全体的な設定ファイル
│ dataloader.key ⇒ 暗号鍵
│ log-conf.xml ⇒ ログ出力用の設定ファイル
│ process-conf.xml ⇒ データローダの設定ファイル(必須ファイル)
│ setting.properties ⇒ データローダ環境設定用ファイル
│
├─data ⇒ 取り込み対象ファイル格納フォルダ
├─log ⇒ エラーログフォルダ
├─status ⇒ 処理結果フォルダ
start.bat(実行ファイル)
@echo off
rem
if "%1"=="hide" goto CmdBegin
start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
:CmdBegin
set DATALOADER_PATH=データローダパス ⇒ 実際のパス
set DATALOADER_CONF_PATH=%DATALOADER_PATH%/conf
cd %DATALOADER_PATH%
java -Dfile.encoding=MS932 -jar dataloader-54.0.0-uber.jar run.mode=batch salesforce.config.dir=./conf process.name=BeanのId
exit 0
map.sdl
# マップイングファイル
Id=ID
Name=Name
...
config.properties
# 中身は空です
log-conf.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" filePattern="./log/dataloader_%d{yyyy-MM-dd_HHmmss}.log.gz">
<PatternLayout>
<Pattern>%-5p %d [%t] - %m%n</Pattern>
</PatternLayout>
<Policies>
<CronTriggeringPolicy schedule="0 0 * * * ?"/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
process-conf.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<!-- 設定Propertyをインポートする -->
<property name="locations" value="file:./conf/setting.properties"/>
</bean>
<bean id="BeanのId" name="name" class="com.salesforce.dataloader.process.ProcessRunner">
<description>説明</description>
<property name="name" value="value"/>
<property name="configOverrideMap">
<map>
<entry key="sfdc.endpoint" value="${sfdc.endpoint}"/>
<entry key="sfdc.username" value="${sfdc.username}"/>
<entry key="sfdc.password" value="${sfdc.password}"/>
<entry key="process.encryptionKeyFile" value="${batch.path}/conf/dataloader.key"/>
<entry key="sfdc.timeoutSecs" value="${timeoutSecs}"/>
<entry key="sfdc.loadBatchSize" value="1"/>
<entry key="sfdc.entity" value="カスタムオブジェクト"/>
<entry key="process.enableLastRunOutput" value="false"/>
<entry key="process.operation" value="insert"/>
<entry key="process.mappingFile" value="${batch.path}/conf/map.sdl"/>
<entry key="dataAccess.name" value="${batch.path}/data/targetData.csv"/>
<entry key="dataAccess.type" value="csvRead"/>
<entry key="loader.csvTab" value="false"/>
<entry key="loader.csvComma" value="true"/>
<entry key="dataAccess.readUTF8" value="true"/>
<entry key="process.initialLastRunDate" value="2006-12-01T00:00:00.000-0800"/>
</map>
</property>
</bean>
・・・
</beans>
setting.properties
# Loader Config
sfdc.endpoint=Salesforceエンドポイント
sfdc.username=ユーザ名
sfdc.password=暗号化のパスワード
batch.path=データローダバッチパス
timeoutSecs=600
Windows タスクスケジューラを作成
下記手順で Window タスクスケジューラを作成します。