データ出力ユーティリティを起動する
データ出力ユーティリティの起動操作と、起動コマンドの入力パラメータ、戻り値について説明します。
<目次>
データ出力ユーティリティの起動
データ出力ユーティリティの起動は、必ず「UTILITY_HOME」ディレクトリで実施します。
データ出力ユーティリティをコマンドラインから起動します。
・Windowsの場合
dataExport.bat [CONNECTXML] [SOQLTXT] |
・Linuxの場合
sh dataExport.sh [CONNECTXML] [SOQLTXT] |
起動コマンドの入力パラメータを以下の表に示します。
入力パラメータ | 説明 | 省略可否 | 省略値 |
---|---|---|---|
CONNECTXML | データ出力ユーティリティの接続設定ファイルを指定します。 例:config/config-connection.xml | × | - |
SOQLTXT | 出力設定ファイルを指定します。 例:config/config-soql.txt | × | |
output | CSVファイル出力先を指定します。 指定したCSVファイル出力先のディレクトリがない場合は作成されます。 例:output=output/result.csv | ○ | UTILITY_HOME/yyyyMMddHHmmss_DataExport.csv |
useHeader | CSVファイルのヘッダ行出力有無を指定します。 true:ヘッダ出力あり 例:useHeader=false | ○ | true |
file-encoding | 文字コードを指定します。 指定可能な文字コード:MS932、Shift-JIS、UTF-8、Windows-31J 例:file-encoding=UTF-8 | ○ | MS932 |
newline-code | 改行コードを指定します。 指定可能な改行コード:\n、\r、\r\n 例:newline-code=\r\n | ○ | \n |
SOQL可変値キー名 | 出力設定ファイル内のSOQLに":可変値名"の形式で指定された箇所を本パラメータで指定された値に変換します。 SOQL参考) 「SELECT ID FROM OBJECT_NAME WHERE COLUMN_NAME = ':REPLACE'」と記載している場合 例:REPLACE=test 本表内に記載しているパラメータ名に合致しないものはSOQL可変値パラメータとして扱われます。 SOQL可変値キー名(上記、SOQL参考の"REPLACE")に指定する文字種は半角英数字のみとなります。 SOQLの概要については、Salesforce ヘルプ「SOQL および SOSL の概要」を参照してください。 | ○ | - |
各ファイルは、絶対パスまたは「UTILITY_HOME」からの相対パスで指定します。
例1:全パラメータ指定
dataExport.bat config/config-Connection.xml config/config-soql.txt output=output/result.csv useHeader=false file-encoding=UTF-8 newline-code="\r\n" REPLACE=test |
例2:一部パラメータ指定
dataExport.bat config/config-Connection.xml config/config-soql.txt useHeader=false file-encoding=UTF-8 output=output/result.csv |
起動時の戻り値
データ出力ユーティリティの起動処理が完了すると、以下の戻り値が返されます。
0:正常終了 (データ出力が成功した場合、または、データ取得結果が0件の場合)
2:異常終了 (出力処理中に異常が発生し、処理を中止した場合)
出力されるCSVの形式
1.出力されるCSVファイルの基本情報
CSVファイルに出力される基本的なヘッダ、値は以下の通り出力されます。
出力されるヘッダ、値の前後はダブルクォート(")で囲まれます。
出力されるヘッダ、値の順序はSOQLのSELECT句に記載した順序で出力されます。
出力対象のレコードの値がnull(値なし)の場合は「""」で出力されます。
2.日時項目のCSVファイル出力
日時、日付、時間の値は以下の表の通りに出力されます。
データ型 | 出力形式 |
---|---|
日時(Datetime) | yyyy-MM-ddTHH:mm:ss.000Z |
日付(Date) | yyyy-MM-dd |
時間(Time) | HH:mm:00.000Z |
3.集合関数で別名を指定しない場合
集合関数を使用し、別名を指定していない場合、ヘッダ部には"expr9"の形式で出力されます。
※exprの末尾にある"9"は"0"からのインデックス値。"maxDate"は別名を指定した例になります。
実行するSOQL:Select MIN(CreatedDate), MAX(CreatedDate) maxDate, COUNT(CreatedDate) From Account
CSVファイルのヘッダ行:"expr0", "maxDate","expr1"
4.テキストエリア項目に改行が指定されている場合
CSVファイルでは、改行後の値は次の行に出力されます。
以下に示す例では、LMISでは2レコードですが、出力したCSVファイルでは改行されることにより4行(3行がデータ行)となります。
・レコードデータ
AAA | BBB | CCC |
---|---|---|
abc | あいう | hij |
efg | かきくけこ | klm |
・CSVファイル
※下表の"行数"はCSVファイルには出力されません。
行数 | 結果 |
---|---|
1(ヘッダ行) | "AAA","BBB","CCC" |
2(データ行) | "abc","あいう |
3(データ行) | えお","hij" |
4(データ行) | "efg","かきくけこ","klm" |
5.リレーションクエリが指定されている場合
リレーションクエリを使用したSOQLを使用した場合でも、CSVファイルのヘッダには、SOQLで指定した列名で出力されます。
※以下のSOQLでは"DDD.EEE"がリレーションクエリを表します。
実行するSOQL: Select AAA, BBB, DDD.EEE From OBJ
CSVファイルのヘッダ行: "AAA","BBB","DDD.EEE"
6.テキスト項目にダブルクォート(")および、カンマ(,)が入力されている場合
ダブルクォートは「"」→「""」にエスケープされ、カンマはダブルクォートに囲まれた値として出力されます。
・レコードデータ
AAA | BBB |
---|---|
ab"c | de,f |
・CSVファイル
※下表の"行数"はCSVファイルには出力されません。
行数 | 結果 |
---|---|
1(ヘッダ行) | "AAA","BBB" |
2(データ行) | "ab""c","de,f" |
7.サブクエリが指定されている場合
サブクエリを使用したSOQLを使用した場合でも、CSVファイルのヘッダには、SOQLで指定した列名で出力されます。
また、サブクエリは複数指定可能です。
例1:サブクエリの別名なし
実行するSOQL:Select ID, Name, (Select ID, Name From Contacts) From Account
CSVファイルのヘッダ行:"ID","Name","ID", "Name"
例2:サブクエリの別名あり
実行するSOQL:Select ID, Name, (Select cons.ID, cons.Name From Contacts cons) From Account
CSVファイルのヘッダ行:"ID","Name","cons.ID", "cons.Name"
注意事項
大量データまたは大容量ファイルを出力する場合、ヒープメモリやタイムアウト値などを変更する必要があります。
変更が必要となるメッセージは以下になります。
①実行ログに以下の内容が出力されている場合、ヒープメモリ値を変更する必要があります。
E30000007:OutOfMemoryが発生しました。ヒープサイズを増やし再度実施してください。 |
ヒープメモリ変更方法
ヒープメモリ等の設定値は「dataExport.bat(.sh)」に記載されています。
下記に記載されているコメント(bat:rem、sh:#)を削除してご利用ください。
〇dataExport.bat |
なお、Javaのバージョンによって一部オプション名が変更となっております。下表をご参照ください。
Java 1.7 | Java 1.8以降 |
---|---|
-Xms | -Xms |
-Xmx | -Xmx |
-XX:PermSize | -XX:MetaspaceSize |
-XX:MaxPermSize | -XX:MaxMetaspaceSize |
②実行ログに以下の内容が出力されている場合、タイムアウト値を変更する必要があります。
タイムアウト値の変更方法は「接続設定ファイル(config-connection.xml)」を参照してください。
E30000003:SOQL実行に失敗しました。(原因=Request to [Force.com URL] timed out. TimeTaken=60094 ConnectionTimeout=0 ReadTimeout=60000) |
③実行ログに以下の内容が出力されている場合、取得条件などを変更し、取得するデータ量を減らす必要があります。
E30000003:SOQL実行に失敗しました。(原因=Salesforce APIから制限を超えるデータ量を受信しました。) |
参考情報
データ出力ユーティリティは、処理結果を実行ログとして出力します。実行ログの出力先は「log/export/」ディレクトリに出力されます。
ファイル名は「yyyyMMddHHmmss_DataExport.log」形式で出力されます。データ出力ユーティリティのメッセージについては、「データ出力ユーティリティのメッセージ」を参照してください。