CSV形式でクエリ結果を出力する

psqlコマンドでクエリ結果をCSV形式で出力するには以下のようにする。

psql -h ホスト名 -U ユーザ名 -d データベース名 -c "SQL" -A -F ',' > output.csv

オプションは以下の通り。

  • -h: ホスト名
  • -U: ユーザ名
  • -d: データベース名
  • -c: 実行するSQL
  • -A: テーブル形式で出力しない
  • -F: フィールド区切り文字を指定する

ポイントは-Aオプションによってテーブル形式で出力しないようにし、-Fオプションでフィールド区切り文字を指定する。

TSV形式でクエリ結果を出力する

TSV形式で出力するには以下のようにする。

psql -h ホスト名 -U ユーザ名 -d データベース名 -c "SQL" -A -F $'\t' > output.tsv

ポイントはタブ文字を指定するために$'\t'としている。

SJISで出力する

CSV出力する際にSJISで出力するとExcelで開いた際に文字化けせず便利。
SJISで出力するには環境変数PGCLIENTENCODINGを指定する。

Linuxの場合。

export PGCLIENTENCODING=SJIS

Windowsの場合。

set PGCLIENT=SJIS

上記の環境変数をセットした上でpsqlコマンドを実行するとSJISで出力される。