outputcsv

指定したファイルシステムパスに入力レコードのフィールド値をCSV形式で書き込みます。最初の行にフィールド名をヘッダーとして書き込み、以降の各レコードのフィールド値をカンマで区切って書き込みます。

コマンドプロパティ

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

構文

outputcsv [overwrite=BOOL] [append=BOOL] [encoding=STR] [bom=BOOL] [tab=BOOL] [partition=BOOL] [tmp=STR] [emptyfile=BOOL] [flush=INT{s|m|h|d}] FILE_PATH FIELD, ...

オプション

overwrite=BOOL
tに設定すると、対象ファイルが既に存在していても上書きします。未設定の場合、ファイルが存在するとクエリが失敗します。appendオプションと同時には使用できません。(デフォルト: f
append=BOOL
tに設定すると、対象ファイルが既に存在する場合にファイルの末尾に追記します。overwriteオプションと同時には使用できません。(デフォルト: f
encoding=STR
出力ファイルの文字エンコーディングを指定します。(デフォルト: utf-8
bom=BOOL
tに設定すると、ファイルの先頭にUTF-8バイトオーダーマーク(BOM)を書き込みます。Microsoft ExcelでCSVファイルを開いたときに文字化けする場合はこのオプションを使用します。(デフォルト: f
tab=BOOL
tに設定すると、カンマの代わりにタブ文字を区切り文字として使用します。(デフォルト: f
partition=BOOL
tに設定すると、ファイルパスに時刻ベースのマクロを使用してパーティション別にファイルを分割して書き込みます。ログ発生時刻基準のlogtimeマクロと現在時刻基準のnowマクロを使用できます。(デフォルト: f
tmp=STR
一時ファイルパスを指定します。設定すると該当パスに一時書き込みを行い、クエリが終了すると最終ファイルパスに移動します。
emptyfile=BOOL
tに設定すると、入力レコードがなくても空のファイルを作成します。(デフォルト: f
flush=INT{s|m|h|d}
定期的にバッファをフラッシュする間隔を指定します。たとえばflush=10sは10秒ごとにバッファをフラッシュします。

対象

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

入力フィールド

なし

出力フィールド

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

エラーコード

パースエラー
エラーコードメッセージ説明
30200outputcsv 명령어 쿼리가 잘못되었습니다.コマンド文字列がカンマで終わっている場合
30201outputcsv 명령어로 내보낼 파일 경로에 매크로를 지정한 경우 파티션(partition) 옵션이 필요합니다.ファイルパスに時刻マクロが含まれているがpartition=tがない場合
30202outputcsv 명령어로 내보낼 필드명을 입력하십시오.出力するフィールドが指定されていない場合
30204[encoding]은 outputcsv 명령어에서 지원하지 않는 인코딩입니다.サポートされていないエンコーディングを指定した場合
30205outputcsv 명령어의 overwrite와 append 옵션은 동시에 사용할 수 없습니다.overwrite=tappend=tを同時に指定した場合
30206outputcsv 명령어로 내보낼 임시 파일 경로 tmp_path로의 접근이 거부되었습니다.一時ファイルパスへのアクセス権限がない場合
30207outputcsv 명령어로 내보낼 파일 경로 csv_path로의 접근이 거부되었습니다.CSVファイルパスへのアクセス権限がない場合
ランタイムエラー
エラーコードメッセージ説明後処理の動作
30203outputcsv 명령어를 실행하는 중 IO 오류가 발생했습니다: [msg].ファイル書き込み中にI/Oエラーが発生した場合ファイルハンドルを閉じてクエリを取消
30207outputcsv 명령어로 내보낼 파일 경로 csv_path로의 접근이 거부되었습니다.パーティションモードで解析されたファイルパスにアクセスできない場合クエリを取消

説明

outputcsvコマンドは、入力として受け取ったレコードをCSV形式でファイルに書き込みます。指定したフィールド値のみを書き込み、最初の行にはフィールド名がヘッダーとして含まれます。書き込みが完了したレコードは次のコマンドにそのまま渡されます。

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

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

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

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

使用例

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

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

  1. CSVファイルへの書き込み

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

    src_ipmethoduristatusbytesフィールドを/opt/logpresso/output/access.csvファイルにCSV形式で書き込みます。

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

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

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

  3. BOM付きCSVファイルへの書き込み

    table limit=100 WEB_APACHE_SAMPLE
    | outputcsv bom=t /opt/logpresso/output/access_bom.csv src_ip, method, uri, status
    

    ファイルの先頭にUTF-8 BOMを付加して書き込みます。Microsoft ExcelでCSVファイルを開いたときに文字化けする場合はこのオプションを使用します。

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

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

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

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

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

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

  6. 一時ファイルを使用した書き込み

    table WEB_APACHE_SAMPLE
    | outputcsv tmp=/opt/logpresso/output/access.tmp /opt/logpresso/output/access.csv src_ip, method, uri, status, bytes
    

    クエリ実行中は一時ファイルに書き込み、クエリが正常終了すると最終パスにファイルを移動します。

互換性

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