データベースに接続して CSV ファイルを取得したいことが度々あるが、その度にやり方を忘れてしまっているのでここにメモします。
CSV出力の構文
PostgreSQLでは"psql"で接続後に以下のコマンドを実行すればCSVファイルが出力されます。
デフォルト
対象テーブルの全カラムが出力対象となります。
\COPY {{table名}} TO '{{出力ファイルパス}}' WITH CSV DELIMITER ',';
カラムを選択してCSV出力
出力するカラムを指定したい場合は以下のようにします。
\COPY {{table名}({{column名1}, {{column名2}, {{column名3}) TO '{{出力ファイルパス}}' WITH CSV DELIMITER ','
カラム名もCSV出力
CSVの先頭行(ヘッダ)にカラム名を出力する場合は、HEADER という指定をします。
\COPY {{table名}} TO '{{出力ファイルパス}}' WITH CSV DELIMITER ',' HEADER;
値をダブルウォーとで出力
データをダブルクォート(")で囲みたい場合は ”FORCE QUOTE *” とコマンドを追加します。
\COPY ({SQL文(SELECT文)}) TO '{{出力ファイルパス}}' WITH CSV DELIMITER ',' HEADER FORCE QUOTE *