Talend フォルダーの中にある複数のファイルを処理する(tFileList)
「フォルダ内にある複数のファイルを順に処理したい」とか「フォルダ内にある複数のファイルを1つにまとめたい」といった場合に使える tFileList コンポーネントを使ったジョブを作成します。 この tFileList コンポーネントは、ディレクトリに対して行うこともできファイルマスクパターンを指定して特定のパターンに一致した物のみを列挙することもできます。
フォルダ内のファイルを順次読み取る
ここでは、フォルダーに複数のCSVファイルが存在し、そのCSVファイルを1つのファイルにまとめて出力するようなジョブを作成していきます。
最初に「tFileList」と「tFileInputDelimited」コンポーネントを配置します。
「tFileList」コンポーネントを右クリックし[ロウ]-[反復]を選択します。
[ロウ]-[反復]から「tFileInputDelimited」へ処理を繋ぎます。この接続で、フォルダーから1ファイルずつファイル名が取得され「tFileInputDelimited」コンポーネントで取得されたファイルからデータを取得する設定となります。
次に各コンポーネントの設定をしていきます。まず、「tFileList」をダブルクリックし、コンポーネントタブをアクティブにします。
「ディレクトリ」に対象となるファイルが保管されているパスを指定します。「ファイル(ファイルマスク)」にファイル名またはファイルマスクを指定します。(例えば、csvファイルを対象としたい場合"*.csv"と設定する。)
「tFileInputDelimited」をダブルクリックし、コンポーネントタブをアクティブにします。
「ファイル名/ストリーム」に「tFileList」コンポーネントで取得したファイルのパスが渡されるよう設定していきます。「ファイル名/ストリーム」の入力エリアで**「Ctrlキー+スペースキー」**(入力補完)を押し 表示されるリストの中から**「((String)globalMap.get("tFileList_1_CURRENT_FILEPATH"))」**を選択します。この関数により、パスを含むファイル名が取得されます。
後は、「tFileInputDelimited」で取得されたデータを「tFileOutputDelimited」で出力すれば完成です。