[Talend]tFileUnarchiveを利用してファイルを解凍する

はじめに

こんにちは。DI部の大高です。

今回はTalendのコンポーネント「tFileUnarchive」による圧縮ファイルの解凍を紹介したいと思います。

前提条件

Talendのバージョンは「Talend Open Studio for Big Data」の「Version 7.1.1」で検証しています。

tFileUnarchiveについて

「tFileUnarchive」を利用すると圧縮ファイルを解凍することができます。

「tFileUnarchive」コンポーネントのTalend Helpページはこちらです。

tFileUnarchive

では、具体的に以下で解説していきます。

ジョブの説明

「tFileArchive」でファイル、ディレクトリを圧縮したあとに、「tFileUnarchive」で圧縮ファイルを解凍しています。

「tFileArchive」の「アーカイブフォーマット」が上から順に「zip」、「gzip」、「tar.gz」に設定してあり、それぞれ解凍を行うジョブとなります。

なお「tFileArchive」については、以前こちらの記事でご紹介したものをそのまま利用していますので、今回はこちらのコンポーネントについては特に記載しません。

[Talend]tFileArchiveを利用してファイルを圧縮する | DevelopersIO

「tFileUnarchive」コンポーネントの設定

「tFileUnarchive」コンポーネントは、以下のように設定しました。

外部モジュールのインストール

「tFileUnarchive」コンポーネントですが、パレットからドラッグ&ドロップした段階で外部モジュールのインストールが促されますので「インストール...」をクリックします。

インストール対象のモジュール「ant-1.10.1.jar」が表示されていますので「全てのモジュールをダウンロード及びインストール」をクリックしてインストールします。

インストールすると警告が消えて問題なく利用できるようになります。

アーカイブファイル

解凍したい「アーカイブファイル」のパスを指定します。今回は「tFileArchive」で圧縮したファイルをそのまま解凍するので、コンポーネントの変数「ARCHIVE_FILEPATH」である「tFileArchive_1_ARCHIVE_FILEPATH」を指定しています。

解凍先ディレクトリ

「解凍先ディレクトリ」のパスを指定します。今回はコンポーネント毎にそれぞれ以下のように設定しています。

// zip解凍
"/tmp/Sandbox/Components/tFileUnarchive/zip"

// gzip解凍
"/tmp/Sandbox/Components/tFileUnarchive/gzip"

// tar.gz解凍
"/tmp/Sandbox/Components/tFileUnarchive/tar.gz"

ルートディレクトリにアーカイブファイル名を使用

「解凍先ディレクトリ」のパスの「ルートディレクトリにアーカイブファイル名を使用」するかどうかの設定です。今回は無効にしています。

解凍の前に整合性をチェックする

有効にするとunzipの前に整合性のチェックを行ってくれるようです。今回は無効にしています。

解凍ファイルパス

こちらは英語表示だと「Extract file paths」になっており、圧縮した際のファイルパス構造を解凍時に再現してくれるようになります。

パスワードが必要

ZIP形式の圧縮ファイルにパスワードが設定されている場合は、このオプションを有効にして、パスワードを指定して解凍します。

なお、「tFileArchive」は以下の通り「暗号化方法」が「Javaの暗号化」、「Zip4j AES」、「Zip4j標準」の3つになっています。

一方で「tFileUnarchive」は以下の通り「複合化方法」が「Java解読」、「Zip4j解読」の2つになっています。

この「Zip4j解読」を選択した場合は「Zip4j AES」と「Zip4j標準」のどちらで暗号化していても解読が可能でした。

エラー発生時に終了

このオプションを有効にすると、エラー発生時にジョブが終了します。

ソースファイルメッセージの表示

「詳細設定」タブ上のオプションになります。2018/12/14時点ではヘルプに記載がないようです。

こちらを有効にすると、対象がzipファイルの場合は、以下のようにソースファイルの内容が標準出力に表示されました。

Source file  : Sample1.csv
Source file  : Sample2.csv
Source file  : Sample3.csv

実行結果

設定は以上です。実際にこのジョブを実行すると以下のようにファイルが解凍されます。

C:\tmp\Sandbox\Components\tFileUnarchive>dir /s
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は EC53-D1E9 です

 C:\tmp\Sandbox\Components\tFileUnarchive のディレクトリ

2018/12/14  10:49    <DIR>          .
2018/12/14  10:49    <DIR>          ..
2018/12/14  11:20    <DIR>          gzip
2018/12/14  11:20    <DIR>          tar.gz
2018/12/14  11:36    <DIR>          zip
               0 個のファイル                   0 バイト

 C:\tmp\Sandbox\Components\tFileUnarchive\gzip のディレクトリ

2018/12/14  11:20    <DIR>          .
2018/12/14  11:20    <DIR>          ..
2018/12/14  11:36                23 Sample1.csv
               1 個のファイル                  23 バイト

 C:\tmp\Sandbox\Components\tFileUnarchive\tar.gz のディレクトリ

2018/12/14  11:20    <DIR>          .
2018/12/14  11:20    <DIR>          ..
2018/12/14  10:46                23 Sample1.csv
2018/12/14  10:46                23 Sample2.csv
2018/12/14  10:46                23 Sample3.csv
               3 個のファイル                  69 バイト

 C:\tmp\Sandbox\Components\tFileUnarchive\zip のディレクトリ

2018/12/14  11:36    <DIR>          .
2018/12/14  11:36    <DIR>          ..
2018/12/14  10:46                23 Sample1.csv
2018/12/14  10:46                23 Sample2.csv
2018/12/14  10:46                23 Sample3.csv
               3 個のファイル                  69 バイト

     ファイルの総数:
               7 個のファイル                 161 バイト
              11 個のディレクトリ  13,866,102,784 バイトの空き領域

設定通りファイルが解凍されました!

まとめ

以上、「tFileUnarchive」コンポーネントの紹介でした。

ジョブで圧縮ファイルを解凍したい場合に活用できるコンポーネントだと思います!

それでは。