作成日:2022/01/02 更新日:2022/01/03

概要

psqlのコマンド備忘録です。

接続

psql -h localhost -U postgres -d doppo1 -p 5432
-h host
-U user
-d database
-p port番号
※環境変数PGPASSWORDを設定するとパスワード値が渡される
linux bash)  export PGPASSWORD=postgres
windows cmd) set PGPASSWORD=postgres
windows powershell) $env:PGPASSWORD= "postgres"

認証

pg_hba.confで認証方式を設定をする。

  • md5 md5パスワード認証
  • trust 認証不要

設定の重複行があってもエラーにならないので注意。

pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     trust # psql -U postgres               がパスワード不要で接続可
host    all             all             127.0.0.1/32            trust # psql -U postgres  -l localhost がパスワード不要で接続可

接続データベース変更

\c doppo1

quit

\q

出力結果をファイル出力(起動オプション指定)

psql -o output.txt

出力結果をファイルに出力(psql内で指定)

\o output.txt

テーブルやビュー、シーケンス等の一覧

¥d

テーブル一覧

¥dt

テーブル定義確認

¥d tbl1

ヘルプ

\?

変数に数字セット

\set int1 1
postgres=# select :int1 int1;
 int1
------
    1

変数に文字セット

\set str1 abc

postgres=#  select :'str1' str1;
 str1
------
 abc

変数に空白含む文字セット

\set sql1 'select count(*) from pg_database;'
postgres=# :sql1
 count
-------
     4

select結果を変数にセット

select 'abc' str1;
\gset
postgres=# \echo :str1
abc

テーブルのエクスポート

COPY tbl1 to 'D:\temp\tbl1.tsv';
ファイルパスに日本語不可

パラメータ確認

select current_setting('log_min_duration_statement');

パラメータ変更

select set_config('log_min_duration_statement', '100', 'false');
※第三引数をfalseにするとグローバルで設定される。trueだとローカル

パラメータリロード

select pg_reload_conf();
★ORACLE案件承ります