結論
psqlコマンドでCOPYコマンド発行し標準出力しました。
その結果をリダイレクトしてファイルを作成しています。
psql -U ${user name} -h ${host name} -d ${db name} -c "COPY (${SQL}) TO stdout WITH CSV Header" > ${output path}
Version
psql 9.4.26, server 15.2
psqlコマンド
使ったオプションは以下です。
オプション | 説明 |
---|---|
-U(--username=) | デフォルトのユーザではなくusernameを指定してデータベースに接続 |
-h(--host=) | サーバを実行しているマシンのホスト名を指定 |
-d(--dbname=) | 接続するデータベースの名前を指定。省略可能(オプション以外の最初の引数としてdbnameを指定するのと同じ効力を持つ) |
-c(--command=) | psqlに対し、1つのコマンド文字列を実行し、終了するよう指示。→SQL実行できる |
参考記事(その他のオプションもあり)
COPYコマンド
COPY (${SQL}) TO stdout WITH CSV Header
でヘッダ行を含むcsv形式を標準出力します。