はじめに
諸事情によりDataSpiderのプロジェクト仕様書を全件出力することになりました。
プロジェクト数は数百個あり、UIからプロジェクトを1つ1つダウンロードしていると日が暮れます。
もっと楽な方法はないかと試行錯誤して、スクリプト処理でプロジェクト全件ダウンロードを完結できるようにしました。
前半はスクリプト開発奮闘記です。
結果だけ知りたい方はこちら
プロジェクト仕様書ダウンロード方法
プロジェクト仕様書ダウンロード方法は大きく2通りあります。
DataSpiderStudioからダウンロード
1つ目はDataSpiderのUIであるStudioから操作して仕様書ダウンロードする方法です。
UIからの詳しい操作方法は下記公式FAQに記載があります。
また、キャプチャ付きで分かりやすく解説されている記事がDMS Cubeにありました。
CLIでダウンロード
2つ目はCLIからコマンドで仕様書をダウンロードする方法です。
v4.3でprospecgenというプロジェクト仕様書出力のコマンドが追加されました。
CLIのコマンド一覧はマニュアルから確認できます。
CLIコマンドの実行
CLIコマンドの実行方法が変わっています。
v4.5SP1以前はCLI -M<コマンド設定ファイル>
https://www.hulft.com/help/ja-jp/DataSpider/dss45sp1/help/ja/cli/cli.html
v5.0以降はCLI.exe -c <コマンド名> [オプション]もしくはCLI.exe -f <コマンド設定ファイルパス>
https://www.hulft.com/help/ja-jp/DataSpider/dss500/help/ja/cli/cli.html
それに伴い、逆引きリファレンスrl_reference_095.zip
スクリプトからCLIコマンドを実行したいの設定値が変わっています。
下記はv5.0の逆引きリファレンス
https://www.hulft.com/help/ja-jp/DataSpider/dss500/help/ja/reference/scenario/rl_reference_095.html
CLIを利用した仕様書ダウンロード処理
仕様書ダウンロードコマンドを試す
Server CLI Consoleを開きます。
$DATASPIDER_HOME/server/bin/CLI.exeから開きます。

prospecgenを打ったところ引数が必要なようです。
prospecgen [-s | -u <user>] [ -p ] [ -m ] [ -t ] [ -f ] <project_name> <destination_file_path>
コマンドはこれ
prospecgen -u root プロジェクト "C:\Program Files\DataSpiderServista\server\data\prospecgen\command\プロジェクト.zip"
CLIで仕様書出力はできそうだけど1コマンドで1仕様書しか出力できません。
複数仕様書を一括で出力するスクリプトを開発します。
まずプロジェクト一覧をmyprojectsコマンドで取得して、それをprospecgenコマンドに加工しバッチを実行すればできそう。
プロジェクト仕様書を全件自動ダウンロードするスクリプト開発
全体の流れ
Step1 myprojectsコマンドを実行しプロジェクト名一覧を取得する
Step2 プロジェクト名一覧を加工してprospecgenコマンドを作成する
Step3 作成したprospecgenコマンドを実行する
準備物
①CLIコマンドファイルを叩くためのバッチファイル
②CLIコマンドファイル(myprojects)
上記をC:\Program Files\DataSpiderServista\server\data\prospecgenに格納します。
set DSS_HOME=C:\Program Files\DataSpiderServista
set CLI_EXE="%DSS_HOME%\server\bin\CLI.exe"
set COMMAND_FILE="%DSS_HOME%\server\data\prospecgen\%1"
set RESULT_FILE="%DSS_HOME%\server\data\prospecgen\result.csv"
%CLI_EXE% -f %COMMAND_FILE%>%RESULT_FILE%
myprojects
Step1 myprojectsコマンドを実行しプロジェクト名一覧を取得する
変数代入
スクリプト変数CLIコマンドファイル名に単一行文字列定数ロジックを使いmyprojectsを代入します。
スクリプト変数インストールディレクトリにシステム・プロパティロジックを使いlax.root.install.dirを代入します。

外部アプリケーション起動処理(myprojects実行)
Step2 プロジェクト名一覧を加工してprospecgenコマンドを作成する
CSVファイル読み取り処理
myprojects実行にて作成されたresult.csvを読み取ります。
result.csvは下記のように出力されるため、デリミタ文字をタブとし、読み取り開始行を3行目にします。
また、なぜか、下にnullの行が追加されてしまうのでのちの工程で削除します。

変数代入
result.csvの名前をスクリプト変数プロジェクト名に代入します。
その時名前の右側に不要なスペースがあるため、右側トリムロジックを使います。

マッピング
null行を書き込まないロジックとプロジェクト名をprospecgenコマンドに加工するロジックを組みます。

prospecgen -u root -f ${プロジェクト名} C:\${プロジェクト名}.zip
仕様書出力先のパス内にスペースを含むことはできません。
スペースを含む際はパスを「""」で囲む必要がありますが、「""」で囲むと後工程のCSVファイル書き込みコンポーネントの仕様でコマンド全体が「""」で囲まれます。
「""」で囲まれたコマンドは実行できません。
そのため、スペースを含まないディレクトリに仕様書を出力する必要があります。
ダメな例
prospecgen -u root -f ${プロジェクト名} "C:\Program Files\DataSpiderServista\server\data\prospecgen\command\${プロジェクト名}.zip"
"prospecgen -u root -f rl_reference_074プロジェクト ""C:\Program Files\DataSpiderServista\server\data\prospecgen\command
l_reference_074プロジェクト.zip"""
メッセージコードSCRIPT0008E [launch(1)(基本/処理/外部アプリケーション起動)]の処理に失敗しました。原因:[com.appresso.ds.common.launch.LaunchException: error occurred during executing CLI console : 終了ステータス[1]]
CSVファイル書き込み処理
エンコードはUTF-8を選び、上書きと追加書き込みにチェックします。

DSS5.0からコマンド設定ファイルのエンコーディングはUTF-8になりました。
そのため、エンコードはUTF-8を選択します。
Step3 作成したprospecgenコマンドを実行する
変数代入
スクリプト変数CLIコマンドファイル名に単一行文字列定数ロジックを使いprospecgenを代入します。
スクリプト変数インストールディレクトリにシステム・プロパティロジックを使いlax.root.install.dirを代入します。

外部アプリケーション起動処理(prospecgen実行)
おわりに
気軽に始めましたが沼にはまりました。
ご参考になりましたら幸いです。
参考にした逆引きリファレンスはこちら
逆引きリファレンスのアップロード方法はこちら


















