目次
はじめに
SELECT文の結果をCSVファイルに出力したい場合は、LinuxOSのプロンプトで「vsqlユーティリティ」と「OSコマンド」を組み合わせて実行します。本記事では、以下のOSコマンドを利用する方法をご紹介します。方法①:「awkコマンド」を使用
方法②:「sedコマンド」を使用
「vsqlユーティリティ」と「OSコマンド」を使用する方法
方法①:「awkコマンド」を使用
以下の例では、【vsqlユーティリティからSQLを実行 -> 実行結果をawkコマンドで変更 -> CSV出力】の処理をしています。【構文】
1 |
$ vsql -w パスワード -F '囲み文字+区切り文字+囲み文字' -P footer=off -AXtnqc "SELECT文" | awk '{print "行頭の囲み文字"$0"行末の囲み文字"}' > CSVファイル名 |
【実行例】
vsqlコマンドの -F オプションで区切り文字を「,」に指定、awkコマンドで各データの先頭および末尾に「”」を付与しています。
1 2 3 4 5 |
$ vsql -w test -F '","' -P footer=off -AXtnqc "select * from test;" | awk '{print "\""$0"\""}' > /home/dbadmin/test1.csv $ cat /home/dbadmin/test1.csv "1","SATO","100" "2","MIKE","200" "3","ALICE","300" |
【補足】
区切り文字にタブを使用する場合は、-Fオプションに「-F $'”\t”‘」と指定します。以下は実行例です。
1 2 3 4 5 |
$ vsql -w test -F $'"\t"' -P footer=off -AXtnqc "select * from test;" | awk '{print "\""$0"\""}' > /home/dbadmin/test2.csv $ cat /home/dbadmin/test2.csv "1" "SATO" "100" "2" "MIKE" "200" "3" "ALICE" "300"" |
※vsqlには出力ファイルの区切り文字を指定するオプション(-F)は用意されていますが、囲み文字を指定するオプションが用意されていません。そのため、vsqlの-Fオプションで「”,”」のように区切り文字の前後に囲み文字も付与し、且つ、sedコマンドやawkコマンドを用いてvsql出力行の行頭および行末に「”」を付与しています。
方法②:「sedコマンド」を使用
以下の例では、【vsqlユーティリティからSQLを実行 -> 実行結果をsedコマンドで変更 -> CSV出力】の処理をしています。【構文】
1 |
$ vsql -w パスワード -F '区切り文字' -P footer=off -Aqc "SELECT文" | sed -e 's/[\"]/\\&/g' -e 's/区切り文字/囲み文字&囲み文字/g' -e 's/^\|$/行の先頭と末尾に追加する囲み文字/g' > CSVファイル名 |
【実行例】
vsqlコマンドの -F オプションで区切り文字を「,」に指定、sedコマンドで各データの先頭および末尾に「”」を付与しています。
1 2 3 4 5 6 |
$ vsql -w test -F ',' -P footer=off -Aqc "select * from test;" | sed -e 's/[\"]/\\&/g' -e 's/,/"&"/g' -e 's/^\|$/"/g' > /home/dbadmin/test3.csv $ cat /home/dbadmin/test3.csv "id","name","sal" "1","SATO","100" "2","MIKE","200" "3","ALICE","300" |
【補足】
区切り文字にタブを使用する場合は、-Fオプションに「-F $’\t’」と指定します。「$」は、ログインシェルがbashの場合に、バックスラッシュをエスケープするフォーマットです。以下は実行例です。
1 2 3 4 5 6 |
$ vsql -w test -F $'\t' -P footer=off -Aqc "SELECT * FROM test;" | sed 's/^/"/; s/$/"/; s/\t/"\t"/g' > /home/dbadmin/test4.csv $ cat /home/dbadmin/test3.csv "id" "name" "sal" "1" "SATO" "100" "2" "MIKE" "200" "3" "ALICE" "300" |
参考情報
・Verticaで既存環境のテーブルのDDLとデータを一括で抽出する方法・SELECT結果をCSV出力する方法(その2)
・Export to CSV File With Fields Enclosed by Quotes
検証バージョンについて
この記事の内容はVertica 24.4で確認しています。更新履歴
2024/12/27 以下の内容を更新・sedコマンドを使用する場合の内容を追加
・参考情報にメーカーのブログを追加
2015/04/23 本記事を公開