ディレクトリに存在するファイル名を判定し、拡張子ごとに処理を分岐したい

キーワード:ファイル拡張子,拡張子判定,エラー処理,例外通知
シナリオ一覧に戻る

概要

ディレクトリに存在するファイル名を判定し、拡張子ごとに処理を分岐したい場合、拡張子を格納したスクリプト変数の値を条件分岐処理で判定します。

サンプルプロジェクトの説明

ディレクトリに存在するファイルの拡張子を判定し、拡張子ごとに処理を分岐してファイルの読み取り、およびCSVファイルへの書き込みを行います。
想定外のファイルが存在する場合は、例外通知処理を使用して処理を異常終了させます。

処理の流れ

サンプルプロジェクトの処理の流れは以下の通りです。
  1. ファイル名一覧取得処理」でディレクトリ内のファイル名一覧を取得します。
  2. 繰り返し(データ件数)処理」でファイルごとに処理を繰り返します。
  3. 変数代入処理」で拡張子とファイル名をスクリプト変数に代入します。
  4. 条件分岐処理」でスクリプト変数の値を判定します。
    1. 拡張子が「CSV」の場合、CSVファイルを読み取り、CSVファイルを出力します。
    2. 拡張子が「XML」の場合、XMLファイルを読み取り、CSVファイルを出力します。
    3. 拡張子がそれ以外の場合、「例外通知処理」を使用して処理を異常終了させます。
実行結果のイメージについて

ポイントとなる機能

名前 説明 ツールパレット上の場所
指定文字より後ロジック 入力文字列の指定文字よりあとを返します。 「文字列」-「関数」-「指定文字より後」
小文字に変換ロジック 入力文字列を小文字に変換して返します。 「文字列」-「変換」-「小文字に変換」
条件分岐処理 条件分岐を行います。 「基本」-「フロー」-「条件分岐」

処理のポイント

指定文字より後ロジックは[区切り文字列]に指定した文字よりあとの文字列を返します。
[区切り文字列]にピリオドを指定することで、ディレクトリに存在するファイル名から拡張子を取得することが可能です。
また、拡張子に大文字が含まれる場合に、小文字に変換ロジックで拡張子を小文字に統一することで、大文字・小文字を区別することなく、条件分岐内で拡張子の判定が可能です。

サンプルプロジェクトの使用方法

上記処理を実装したサンプルプロジェクトを用意しています。サンプルプロジェクトを使用する場合の手順は、以下の通りです。

サンプルプロジェクトファイル名 rl_reference_019.zip
  1. サンプルプロジェクトの展開
    サンプルプロジェクトファイル「rl_reference_019.zip」を展開します。

  2. プロジェクトのアップロード
    「rl_reference_019.zip」を展開後に作成される「rl_reference_019プロジェクト」ディレクトリがプロジェクトファイルとなります。
    DataSpider Studioを起動し、マイプロジェクトの画面から[ファイル]-[ローカルからアップロード]で展開したディレクトリ「rl_reference_019プロジェクト」をアップロードしてください。

  3. サンプルデータの準備
    「rl_reference_019.zip」を展開後に作成される「samples」ディレクトリがサンプルデータとなります。
    $DATASPIDER_HOME/server/samplesディレクトリに上書きしてください。

スクリプトの作成手順

プロセスフローおよびデータフローは、「サンプルプロジェクトの説明」のスクリプト画像を参照して適宜設定してください。
  1. ファイル名・拡張子として使用するスクリプト変数を作成します。

  2. デザイナのツールパレット「ファイル」-「ファイル操作」-「ファイル名一覧取得」から、ファイル名一覧取得処理をスクリプトキャンバスに配置します。

  3. デザイナのツールパレット「基本」-「フロー」-「繰り返し(データ件数)」から、繰り返し(データ件数)処理をスクリプトキャンバスに配置します。

  4. デザイナのツールパレット「基本」-「処理」-「変数代入」から、変数代入処理をスクリプトキャンバスに配置します。

  5. 変数代入処理のMapperエディタを開き、ファイル名からピリオドより後の文字列を切り出した値をスクリプト変数に代入する処理を作成します。

  6. デザイナのツールパレット「基本」-「フロー」-「条件分岐」から、条件分岐処理をスクリプトキャンバスに配置します。

  7. [条件分岐開始]の右クリックメニューから[条件の追加]を選択し、条件を追加します。

  8. [条件分岐開始]の右クリックメニューから[条件の追加]を選択し、条件を追加します。

  9. デザイナのツールパレット「ファイル」-「CSV」-「CSVファイル読み取り」から、CSVファイル読み取り処理をスクリプトキャンバスに配置します。

  10. デザイナのツールパレット「ファイル」-「CSV」-「CSVファイル書き込み」から、CSVファイル書き込み処理をスクリプトキャンバスに配置します。

  11. デザイナのツールパレット「ファイル」-「XML」-「XMLファイル読み取り」から、XMLファイル読み取り処理をスクリプトキャンバスに配置します。

  12. デザイナのツールパレット「ファイル」-「CSV」-「CSVファイル書き込み」から、CSVファイル書き込み処理をスクリプトキャンバスに配置します。

  13. デザイナのツールパレット「基本」-「処理」-「例外通知」から、例外通知処理をスクリプトキャンバスに配置します。

  14. スクリプトを実行し、以下の結果になれば成功です。