outputtxt

指定したファイルシステムパスに入力レコードのフィールド値をテキストファイルとして書き込みます。各レコードのフィールド値を区切り文字で連結して1行ずつ書き込みます。

コマンドプロパティ

項目説明
コマンドタイプ加工クエリ
必要な権限クラスター管理者
ライセンス使用量該当なし
並列実行非対応
分散実行制御ノードで実行(reducer)

構文

outputtxt [overwrite=BOOL] [append=BOOL] [encoding=STR] [delimiter=STR] [gz=BOOL] [partition=BOOL] [tmp=STR] [flush=INT{s|m|h|d}] FILE_PATH FIELD, ...

オプション

overwrite=BOOL
tに設定すると、対象ファイルが既に存在していても上書きします。未設定の場合、ファイルが存在するとクエリが失敗します。appendオプションと同時には使用できません。(デフォルト: f
append=BOOL
tに設定すると、対象ファイルが既に存在する場合にファイルの末尾に追記します。overwriteオプションと同時には使用できません。(デフォルト: f
encoding=STR
出力ファイルの文字エンコーディングを指定します。(デフォルト: utf-8
delimiter=STR
フィールド値の間に挿入する区切り文字を指定します。(デフォルト: 半角スペース)
gz=BOOL
tに設定すると、出力ファイルをgzip形式で圧縮します。(デフォルト: f
partition=BOOL
tに設定すると、ファイルパスに時刻ベースのマクロを使用してパーティション別にファイルを分割して書き込みます。ログ発生時刻基準のlogtimeマクロと現在時刻基準のnowマクロを使用できます。(デフォルト: f
tmp=STR
一時ファイルパスを指定します。設定すると該当パスに一時書き込みを行い、クエリが終了すると最終ファイルパスに移動します。
flush=INT{s|m|h|d}
定期的にバッファをフラッシュする間隔を指定します。たとえばflush=10sは10秒ごとにバッファをフラッシュします。

対象

FILE_PATH
テキストファイルを書き込むファイルシステムパス。partition=tオプションと併用する場合は、{logtime:yyyy}{logtime:MM}{logtime:dd}{now:yyyy}などの時刻マクロをパスに含めることができます。
FIELD, ...
テキストファイルに書き込むフィールド名。カンマ(,)で区切って複数のフィールドを指定します。

入力フィールド

なし

出力フィールド

なし(入力レコードをそのまま渡す)

エラーコード

パースエラー
エラーコードメッセージ説明
30400outputtxt 명령어 쿼리가 잘못되었습니다.コマンド文字列がカンマで終わっている場合
30401outputtxt 명령어로 내보낼 파일 경로에 매크로를 지정한 경우 파티션(partition) 옵션이 필요합니다.ファイルパスに時刻マクロが含まれているがpartition=tがない場合
30402outputtxt 명령어로 내보낼 필드명을 입력하십시오.出力するフィールドが指定されていない場合
30403outputtxt 명령어로 내보낼 [temp] 파일이 이미 존재합니다.一時ファイルが既に存在する場合
30404outputtxt 명령어로 내보낼 출력파일명 및 필드 값을 입력하시오.オプション解析後にファイルパスがない場合
30405outputtxt 명령어로 내보낼 출력파일명 및 필드 값을 입력하시오.ファイルパストークンがない場合
30407outputtxt 명령어의 overwrite와 append 옵션은 동시에 사용할 수 없습니다.overwrite=tappend=tを同時に指定した場合
30408outputtxt 명령어로 내보낼 임시 파일 경로 tmp_path로의 접근이 거부되었습니다.一時ファイルパスへのアクセス権限がない場合
30409outputtxt 명령어로 내보낼 파일 경로 file_path로의 접근이 거부되었습니다.テキストファイルパスへのアクセス権限がない場合
ランタイムエラー
エラーコードメッセージ説明後処理の動作
30406outputtxt 명령어를 실행하는 도중 IO 오류가 발생했습니다: [msg].ファイル書き込み中にI/Oエラーが発生した場合ファイルハンドルを閉じてクエリを取消
30409outputtxt 명령어로 내보낼 파일 경로 file_path로의 접근이 거부되었습니다.パーティションモードで解析されたファイルパスにアクセスできない場合クエリを取消

説明

outputtxtコマンドは、入力として受け取ったレコードのフィールド値を区切り文字で連結してテキストファイルに書き込みます。各レコードのフィールド値は指定した区切り文字(デフォルト: 半角スペース)で連結されて1行として書き込まれます。CSVと異なりヘッダー行はなく、フィールド値を引用符で囲みません。書き込みが完了したレコードは次のコマンドにそのまま渡されます。

gz=tオプションを使用すると、出力ファイルをgzip形式で圧縮します。

partition=tオプションを使用すると、各レコードの_timeフィールドの値(ログ発生時刻)を基準にファイルパスの時刻マクロを解釈し、パーティション別に個別のファイルに書き込みます。

tmpオプションを使用すると、クエリ実行中は一時ファイルパスに書き込み、クエリが正常終了すると最終パスにファイルを移動します。クエリが取り消された場合、appendモードでなければ一時ファイルまたは出力ファイルを削除します。

分散環境では制御ノードでファイル書き込みを実行します。

このコマンドは4.0.2511.0バージョンからクラスター管理者権限が必要で、アクセス可能なファイルパスが制限されます。詳細はファイルアクセス制限を参照してください。

使用例

これらの使用例で参照するWEB_APACHE_SAMPLEテーブルを準備するには、クエリ実習用データを参照してください。

各使用例のファイルパスはALLOWED_FILE_SCAN_PATHS設定に含まれていることを前提とします。

  1. テキストファイルへの書き込み

    table limit=100 WEB_APACHE_SAMPLE
    | outputtxt /opt/logpresso/output/access.txt src_ip, method, uri, status, bytes
    

    src_ipmethoduristatusbytesフィールドを半角スペースで区切って/opt/logpresso/output/access.txtファイルに書き込みます。

  2. 区切り文字を指定して書き込み

    table limit=100 WEB_APACHE_SAMPLE
    | outputtxt delimiter="|" /opt/logpresso/output/access.txt src_ip, method, status
    

    フィールド値をパイプ(|)文字で区切って書き込みます。

  3. gzip圧縮ファイルへの書き込み

    table WEB_APACHE_SAMPLE
    | outputtxt gz=t /opt/logpresso/output/access.txt.gz src_ip, method, uri, status
    

    出力ファイルをgzip形式で圧縮して書き込みます。

  4. 既存ファイルへの上書き

    table limit=100 WEB_APACHE_SAMPLE
    | outputtxt overwrite=t /opt/logpresso/output/access.txt src_ip, method, status
    

    対象ファイルが既に存在していても上書きします。

  5. パーティション別ファイルへの分割

    table WEB_APACHE_SAMPLE
    | outputtxt partition=t /opt/logpresso/output/{logtime:yyyy}/{logtime:MM}/{logtime:dd}/access.txt src_ip, method, status
    

    ログ発生時刻を基準に年/月/日ディレクトリを作成し、パーティション別にテキストファイルを書き込みます。

  6. 既存ファイルへの追記

    table limit=100 WEB_APACHE_SAMPLE
    | outputtxt append=t /opt/logpresso/output/access.txt src_ip, method, status
    

    既存ファイルの末尾にレコードを追記します。

互換性

outputtxtコマンドは、Sonar 4.0以前のバージョンから提供されています。4.0.2511.0バージョンからクラスター管理者権限が必要です。