psqlでクエリの結果をcsvファイルに出力する方法

こんにちは、さるまりんです。

開発をしている際にテーブルの中身を確認したり、ある条件でデータを抽出したりとSQLの結果をファイルに吐き出したい時があります。

今回はPostgreSQLでそれをする方法をメモします。

PostgreSQLのクライアントプログラムpsqlを使ってクエリの結果をcsvファイルに出力するにはpsqlコマンドでデータベースにつないでから

1. 出力先をファイルに

# \o [出力先ファイルパス]

2. 文字揃えをオフに

# \a

3. 区切り文字を設定

# \f '[区切り文字]'

4. SQLを実行

# [SQL文]

5. 出力先を戻す

# \o

実行例です。

# \o output.csv
# \a
# \f ','
# select * from users;
# \o

上の5行で、出力先をoutput.csvに設定、文字揃えをオフにし、区切り文字をカンマに設定、usersテーブルの全てを出力して、出力先を元に戻しています。

psqlコマンドでシェルの状態でも同様のことができます。

$ psql [データベース名など接続情報] -c "SQL文" -A -F, > [出力ファイル名]

-Aで文字揃えをオフに、-Fで区切り文字を指定しています。

上記の例は

$ psql -d database_name -U user_name -c "select * from users;" -A -F, > output.csv

簡単なものであれば独自のプログラムを書かなくてもデータ抽出できそうですね。

読んでくださってありがとうございました。

それではまた!