2022/07/04

psqlコマンドを使い、SQLファイルを実行して、csv/tsvに結果を出力する

postgresql

稀にデータ抽出作業を手動で行う必要があり、都度やり方を調べるので備忘録として残しておきます。

サーバーにログイン

まずは、psqlコマンドを使って、postgresql dbにアクセスできるサーバーにログインします。

(私は多くのアプリで、postgresql dbをk8s上に構築しているので、 kubectl exec -it pod-name -n your-namespace -- bash 等でログインします)

SQLファイルを保存

# 例として)以下のようなSQLファイルを保存して、データを抽出することにします。
$ cat <<EOF > select_user_names.sql
select
    u.id as ユーザーID
    , u.name as 氏名
  from
    users as u
  where
    u.status = 'active'
  order by
    u.id asc
;
EOF

CSV/TSVファイル出力

# csvファイルで保存する場合
$ psql -f ./select_user_names.sql -U db_user -d db_name -A -F, > ./select_user_names.csv

# tsvファイルで保存する場合
$ psql -f ./select_user_names.sql -U db_user -d db_name -A -F $'\t' > ./select_user_names.tsv

psqlを実行したディレクトリに結果ファイルが出力されます。