outputcsv
指定したファイルシステムパスに入力レコードのフィールド値をCSV形式で書き込みます。最初の行にフィールド名をヘッダーとして書き込み、以降の各レコードのフィールド値をカンマで区切って書き込みます。
コマンドプロパティ
| 項目 | 説明 |
|---|---|
| コマンドタイプ | 加工クエリ |
| 必要な権限 | クラスター管理者 |
| ライセンス使用量 | 該当なし |
| 並列実行 | 非対応 |
| 分散実行 | 制御ノードで実行(reducer) |
構文
オプション
overwrite=BOOLtに設定すると、対象ファイルが既に存在していても上書きします。未設定の場合、ファイルが存在するとクエリが失敗します。appendオプションと同時には使用できません。(デフォルト:f)append=BOOLtに設定すると、対象ファイルが既に存在する場合にファイルの末尾に追記します。overwriteオプションと同時には使用できません。(デフォルト:f)encoding=STR- 出力ファイルの文字エンコーディングを指定します。(デフォルト:
utf-8) bom=BOOLtに設定すると、ファイルの先頭にUTF-8バイトオーダーマーク(BOM)を書き込みます。Microsoft ExcelでCSVファイルを開いたときに文字化けする場合はこのオプションを使用します。(デフォルト:f)tab=BOOLtに設定すると、カンマの代わりにタブ文字を区切り文字として使用します。(デフォルト:f)partition=BOOLtに設定すると、ファイルパスに時刻ベースのマクロを使用してパーティション別にファイルを分割して書き込みます。ログ発生時刻基準のlogtimeマクロと現在時刻基準のnowマクロを使用できます。(デフォルト:f)tmp=STR- 一時ファイルパスを指定します。設定すると該当パスに一時書き込みを行い、クエリが終了すると最終ファイルパスに移動します。
emptyfile=BOOLtに設定すると、入力レコードがなくても空のファイルを作成します。(デフォルト: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ファイルに書き込むフィールド名。カンマ(
,)で区切って複数のフィールドを指定します。
入力フィールド
なし
出力フィールド
なし(入力レコードをそのまま渡す)
エラーコード
パースエラー
| エラーコード | メッセージ | 説明 |
|---|---|---|
| 30200 | outputcsv 명령어 쿼리가 잘못되었습니다. | コマンド文字列がカンマで終わっている場合 |
| 30201 | outputcsv 명령어로 내보낼 파일 경로에 매크로를 지정한 경우 파티션(partition) 옵션이 필요합니다. | ファイルパスに時刻マクロが含まれているがpartition=tがない場合 |
| 30202 | outputcsv 명령어로 내보낼 필드명을 입력하십시오. | 出力するフィールドが指定されていない場合 |
| 30204 | [encoding]은 outputcsv 명령어에서 지원하지 않는 인코딩입니다. | サポートされていないエンコーディングを指定した場合 |
| 30205 | outputcsv 명령어의 overwrite와 append 옵션은 동시에 사용할 수 없습니다. | overwrite=tとappend=tを同時に指定した場合 |
| 30206 | outputcsv 명령어로 내보낼 임시 파일 경로 tmp_path로의 접근이 거부되었습니다. | 一時ファイルパスへのアクセス権限がない場合 |
| 30207 | outputcsv 명령어로 내보낼 파일 경로 csv_path로의 접근이 거부되었습니다. | CSVファイルパスへのアクセス権限がない場合 |
ランタイムエラー
| エラーコード | メッセージ | 説明 | 後処理の動作 |
|---|---|---|---|
| 30203 | outputcsv 명령어를 실행하는 중 IO 오류가 발생했습니다: [msg]. | ファイル書き込み中にI/Oエラーが発生した場合 | ファイルハンドルを閉じてクエリを取消 |
| 30207 | outputcsv 명령어로 내보낼 파일 경로 csv_path로의 접근이 거부되었습니다. | パーティションモードで解析されたファイルパスにアクセスできない場合 | クエリを取消 |
説明
outputcsvコマンドは、入力として受け取ったレコードをCSV形式でファイルに書き込みます。指定したフィールド値のみを書き込み、最初の行にはフィールド名がヘッダーとして含まれます。書き込みが完了したレコードは次のコマンドにそのまま渡されます。
partition=tオプションを使用すると、各レコードの_timeフィールドの値(ログ発生時刻)を基準にファイルパスの時刻マクロを解釈し、パーティション別に個別のファイルに書き込みます。
tmpオプションを使用すると、クエリ実行中は一時ファイルパスに書き込み、クエリが正常終了すると最終パスにファイルを移動します。クエリが取り消された場合、appendモードでなければ一時ファイルまたは出力ファイルを削除します。
分散環境では制御ノードでファイル書き込みを実行します。
このコマンドは4.0.2511.0バージョンからクラスター管理者権限が必要で、アクセス可能なファイルパスが制限されます。詳細はファイルアクセス制限を参照してください。
使用例
これらの使用例で参照するWEB_APACHE_SAMPLEテーブルを準備するには、クエリ実習用データを参照してください。
各使用例のファイルパスはALLOWED_FILE_SCAN_PATHS設定に含まれていることを前提とします。
-
CSVファイルへの書き込み
table limit=100 WEB_APACHE_SAMPLE | outputcsv /opt/logpresso/output/access.csv src_ip, method, uri, status, bytessrc_ip、method、uri、status、bytesフィールドを/opt/logpresso/output/access.csvファイルにCSV形式で書き込みます。 -
既存ファイルへの上書き
table limit=100 WEB_APACHE_SAMPLE | outputcsv overwrite=t /opt/logpresso/output/access.csv src_ip, method, status対象ファイルが既に存在していても上書きします。
-
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ファイルを開いたときに文字化けする場合はこのオプションを使用します。
-
パーティション別ファイルへの分割
table WEB_APACHE_SAMPLE | outputcsv partition=t /opt/logpresso/output/{logtime:yyyy}/{logtime:MM}/{logtime:dd}/access.csv src_ip, method, statusログ発生時刻を基準に年/月/日ディレクトリを作成し、パーティション別にCSVファイルを書き込みます。
-
既存ファイルへの追記
table limit=100 WEB_APACHE_SAMPLE | outputcsv append=t /opt/logpresso/output/access.csv src_ip, method, status既存ファイルの末尾にレコードを追記します。
-
一時ファイルを使用した書き込み
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バージョンからクラスター管理者権限が必要です。