Talend フォルダーの中にある複数のファイルを処理する(tFileList)

「フォルダ内にある複数のファイルを1つにまとめたい」といった場合に使える tFileListコンポーネントを使ったジョブを作成します。

フォルダ内のファイルを順次読み取る

ここでは、フォルダーに複数のCSVが存在し、そのCSVファイルを1つにまとめて出力するよう ジョブを作成していきます。

最初に「tFileList」と「tFileInputDelimited」コンポーネントを配置します。

tFileListコンポーネントの配置

「tFileList」コンポーネントを右クリックし[ロウ]-[反復]を選択します。

反復設定

[ロウ]-[反復]から「tFileInputDelimited」へ処理を繋ぎます。この接続で、フォルダーから 1ファイルずつファイル名が取得され「tFileInputDelimited」コンポーネントで取得されたファイルから データを取得する設定となります。

tFileListからtFileInputDelimitedへ接続

次に各コンポーネントの設定をしていきます。まず、「tFileList」をダブルクリックし、コンポーネントタブをアクティブにします。

「ディレクトリ」に対象となるファイルが保管されているパスを指定します。「ファイル(ファイルマスク)」に ファイル名またはファイルマスクを指定します。(例えば、csvファイルを対象としたい場合"*.csv"と設定する。)

tFileListコンポーネントの設定

「tFileInputDelimited」をダブルクリックし、コンポーネントタブをアクティブにします。

「ファイル名/ストリーム」に「tFileList」コンポーネントで取得したファイルのパスが渡されるよう 設定していきます。「ファイル名/ストリーム」の入力エリアで「Ctrlキー+スペースキー」(入力補完)を押し 表示されるリストの中から「((String)globalMap.get("tFileList_1_CURRENT_FILEPATH"))」を 選択します。この関数により、パスを含むファイル名が取得されます。

tFileInputDelimitedコンポーネントの設定

後は、「tFileInputDelimited」で取得されたデータを「tFileOutputDelimited」で出力すれば完成です。

完成