はじめに

SELECT文の結果をCSVファイルに出力したい場合は、LinuxOSのプロンプトで「vsqlユーティリティ」と「OSコマンド」を組み合わせて実行します。本記事では、以下のOSコマンドを利用する方法をご紹介します。

   方法①:「awkコマンド」を使用
   方法②:「sedコマンド」を使用

「vsqlユーティリティ」と「OSコマンド」を使用する方法

方法①:「awkコマンド」を使用

以下の例では、【vsqlユーティリティからSQLを実行 -> 実行結果をawkコマンドで変更 -> CSV出力】の処理をしています。

【構文】


【実行例】
vsqlコマンドの -F オプションで区切り文字を「,」に指定、awkコマンドで各データの先頭および末尾に「”」を付与しています。


【補足】
区切り文字にタブを使用する場合は、-Fオプションに「-F $'”\t”‘」と指定します。以下は実行例です。


※vsqlには出力ファイルの区切り文字を指定するオプション(-F)は用意されていますが、囲み文字を指定するオプションが用意されていません。そのため、vsqlの-Fオプションで「”,”」のように区切り文字の前後に囲み文字も付与し、且つ、sedコマンドやawkコマンドを用いてvsql出力行の行頭および行末に「”」を付与しています。

方法②:「sedコマンド」を使用

以下の例では、【vsqlユーティリティからSQLを実行 -> 実行結果をsedコマンドで変更 -> CSV出力】の処理をしています。

【構文】


【実行例】
vsqlコマンドの -F オプションで区切り文字を「,」に指定、sedコマンドで各データの先頭および末尾に「”」を付与しています。


【補足】
区切り文字にタブを使用する場合は、-Fオプションに「-F $’\t’」と指定します。「$」は、ログインシェルがbashの場合に、バックスラッシュをエスケープするフォーマットです。以下は実行例です。


参考情報

Verticaで既存環境のテーブルのDDLとデータを一括で抽出する方法
SELECT結果をCSV出力する方法(その2)
Export to CSV File With Fields Enclosed by Quotes

検証バージョンについて

この記事の内容はVertica 24.4で確認しています。

更新履歴

2024/12/27 以下の内容を更新
       ・sedコマンドを使用する場合の内容を追加
       ・参考情報にメーカーのブログを追加
2015/04/23 本記事を公開