#
ドキュメント

Document

自分のための備忘録です。

データローダ バッチ処理 & Windowsタスクスケジューラ

要件

メモ データローダのコマンドラインインターフェースは、Windows でのみサポートされています。

https://help.salesforce.com/articleView?id=loader_encryption.htm&type=5

64 ビット版 Microsoft® Windows® 7、Windows 8、または Windows 10
120 MB のハードディスクの空き容量
256 MB の空きメモリ
Zulu OpenJDK バージョン 11

https://help.salesforce.com/articleView?id=installing_the_data_loader.htm&type=5

Ref.

データローダ v50.0.0(2020-11-22時点最新)

インストール

  1. Zulu JDK 11.43C:\Program Files\Zulu\zulu-11\
  2. データローダ インストールディレクトリ:C:\Uesr\qcuser\dataloader\v50.0.0

Zulu JDKにパスを通す

  1. 環境変数JAVA_HOME設定:C:\Program Files\Zulu\zulu-11
  2. 環境変数PATHJAVA_HOME\bin追記

※ Tips

  • $ where javaでZulu JDKのパスを確認可能
  • $ echo %JAVA_HOME%で正しく設定されているかを確認

バッチ処理

概要

  • データローダのバッチ処理は、C:\Users\{{username}}\dataloader\v50.0.0\bin\process.batのこと
  • process-conf.xmlにバッチ処理の内容を記載
  • データローダーを使ったバッチ処理は以下のとおり
$ process.bat "<file path to process-conf.xml>" <process name>

ref. https://help.salesforce.com/articleView?id=command_line_intro.htm&type=5

具体例)

$ C:\Users\{{username}}\dataloader\v50.0.0\bin>process.bat "C:\Users\{{username}}\Downloads\sf_test\conf" accountInsert

手順

  1. 暗号キー生成
  2. データローダログインパスワード暗号化 $ encrypt -e {{password}}{{security token}} {key file path}}
  3. process-conf.xmlにバッチ処理の内容を実行

※データローダログインパスワードはセキュリティトークン付与の値

暗号キー生成

$ C:\Users\{{username}}\dataloader\v50.0.0\bin>encrypt -k
# 以下にファイルが作成
C:\Users\{{username}}\.dataloader\dataLoader.key

デフォルトキー配置場所:C:\Users\{{username}}\.dataloader\dataLoader.key

データローダログインパスワード暗号化

$ C:\Users\{{username}}\dataloader\v50.0.0\bin>encrypt -e {{pass}}{{security token}} C:\Users\{{username}}\.dataloader\dataLoader.key

スケジュール処理

Windowsタスクスケジューラを使用

タスクスケジューラ

v44.0.0

データローダインストール

v45からはJavaがZulu 11が必須となった。しかしZulu 11は64ビットしか対応していない。 そのために32ビット機で動かすためにGitHubからダウンロード。

  1. forcedotcom/dataloaderからv44.0.0をダウンロード
  2. Java 8をインストール

Java8をインストールしたら自動で環境変数JAVA_HOMEが追加されてPATHにJDKのパスが追記された。

  • JAVA_HOME:C:\Program Files\Java\jre1.8.0_271
  • PATH:
    • C:\Program Files\Java\jre1.8.0_271\binを先頭に追加
    • C:\Program Files\Common Files\Oracle\Java\javapath;を末尾に移動

JavaのPATHへの追加は下記を参照。

http://ooltcloud.sakura.ne.jp/blog/201802/article_09182611.html https://teratail.com/questions/35801
https://web.plus-idea.net/2017/04/java_home-swich-jdk/

encrypt・proccessインストールディレクトリ

$ C:\Users\{{{username}}\AppData\Local\salesforce.com\Data Loader\bin

タスクスケジューラ

タスクスケジューラ

データローダ設定

バッチサイズ (Batch size) 一度の挿入、更新、更新/挿入、削除操作で Salesforce に対して入出力されるレコードは、このオプションで指定したサイズで増分されます。最大 200 レコードです。50 から 100 までの値をお勧めします。 [Bulk API を使用] オプションがオンの場合、最大値は 10,000 です。

Bulk API を使用 このオプションを選択すると、Bulk API を使用して、レコードの挿入、更新、更新/挿入、削除、および物理削除が行われます。Bulk API は、多数のレコードを非同期で読み込みまたは削除するように最適化されます。並列処理を行い、ネットワーク往復数を少なくすることで、デフォルトの SOAP ベースの API よりも高速に動作します。 警告 データローダで [Use Bulk API (Bulk API を使用)] をオンにすると、レコードを物理削除できます。物理削除されたレコードはただちに削除され、ごみ箱から復元することはできません。

一括 API に対して順次モードを有効にする Bulk API に並列処理ではなく順次処理を使用する場合、このオプションを選択します。並列処理を行うと、データベースの競合が生じる可能性があります。競合が激しいと、読み込みに失敗する可能性があります。順次モードでは、バッチが 1 つずつ処理されますが、読み込みの処理時間が長くなる可能性があります。 [Bulk API を使用] オプションがオンの場合、このオプションだけを使用できます。

https://developer.salesforce.com/docs/atlas.ja-jp.dataLoader.meta/dataLoader/configuring_the_data_loader.htm

Bulk APIを有効にしても順次モードを適用することができる

[一括 API に対して順次モードを有効にする] オプションをオンにすることもできます。並列処理を行うと、データベースの競合が生じる可能性があります。競合が激しいと、読み込みに失敗する可能性があります。順次モードでは、バッチが 1 つずつ処理されますが、読み込みの処理時間が長くなる可能性があります。 注意: データローダで [Use Bulk API (Bulk API を使用)] をオンにすると、レコードを物理削除できます。物理削除されたレコードはただちに削除され、ごみ箱から復元することはできません。

https://developer.salesforce.com/docs/atlas.ja-jp.dataLoader.meta/dataLoader/loader_configuring_bulk_api.htm