環境
CentOS7
PostgreSQL 11.18
psqlとは
psqlとはPostgreSQLのターミナル型フロントエンドです。 対話的に問い合わせを入力し、それをPostgreSQLに対して発行して、結果を確認することができます。 また、ファイルまたはコマンドライン引数から入力を読み込むことも可能です。 さらに、psqlは、スクリプトの記述を簡便化したり、様々なタスクを自動化したりする、いくつものメタコマンドとシェルに似た各種の機能を備えています。
構文
psql [option...] [dbname [username]]
-bash-4.2$ psql -U postgres
ユーザ postgres のパスワード:
psql (11.18)
"help" でヘルプを表示します。
postgres=#
オプション
接続オプション
接続オプション | 説明 | 環境変数 | デフォルト |
---|---|---|---|
-U ユーザ名 | 接続時のデータベースユーザ名を指定 | PGUSER | OSユーザ名 |
-h ホスト名またはIPアドレス | 接続先のホスト名またはIPアドレスを指定 TCP/IPやUNIXドメインによる接続が可能 | PGHOST | UNIXドメインによる接続 |
-d データベース名 | 接続先のデータベース名を指定 | PGDATABASE | データベースユーザ名 |
-p ポート名 | 接続先のポート番号を指定 | PGPORT | 5432 |
※ -dは省略可能
psql -U user testdb
はユーザー名user、DB名testdbを指定
代表的なオプション
接続オプション | 説明 |
---|---|
-l --list | すべてのデータベースのリストを表示した後、psqlを終了する |
-c コマンド名 --command=コマンド名 | 指定したコマンドの実行結果を表示した後、psqlを終了する |
-f ファイル名 --file=ファイル名 | 指定したファイルをソースとして読み込み、実行結果を表示した後、psqlを終了する |
-s --single-step | 各コマンドごとに実行するかキャンセルするかの確認をおこなう(シングルステップモード) |
-1 --single-transaction | 複数のコマンドを1つのトランザクションで実行する -cオプションや-fオプションと組み合わせた場合のみ使用できる |
※ 指定したファイルの読み込みには、シェルの出力リダイレクションを使用することもできる
psql -U user -d testdb < ファイル名
使用例
-l
-bash-4.2$ psql -l
ユーザ postgres のパスワード:
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限
-----------+----------+------------------+-------------+-------------------+-----------------------
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 行)
-c
-bash-4.2$ psql -U postgres -c "select * from tbl;"
ユーザ postgres のパスワード:
c1 | c2
----+-----
2 | 200
1 | 300
(2 行)
-bash-4.2$
-f
-bash-4.2$ echo "select * from tbl;" > /home/postgres/test.sql
-bash-4.2$ psql -U postgres -f /home/postgres/test.sql
ユーザ postgres のパスワード:
c1 | c2
----+-----
2 | 200
1 | 300
(2 行)
-bash-4.2$
-s
-bash-4.2$ psql -U postgres -sf /home/postgres/test.sql
ユーザ postgres のパスワード:
***(シングルステップモード: コマンドを確認してください)********
select * from tbl;
***([Enter] を押して進むか、x [Enter] でキャンセル)**************
c1 | c2
----+-----
2 | 200
1 | 300
(2 行)
-bash-4.2$
-1
-bash-4.2$ psql -U postgres -1sf /home/postgres/test.sql
ユーザ postgres のパスワード:
***(シングルステップモード: コマンドを確認してください)********
select * from tbl;
***([Enter] を押して進むか、x [Enter] でキャンセル)**************
c1 | c2
----+-----
2 | 200
1 | 300
(2 行)
***(シングルステップモード: コマンドを確認してください)********
insert into tbl values (3, 400);
***([Enter] を押して進むか、x [Enter] でキャンセル)**************
INSERT 0 1
***(シングルステップモード: コマンドを確認してください)********
select * from tbl;
***([Enter] を押して進むか、x [Enter] でキャンセル)**************
c1 | c2
----+-----
2 | 200
1 | 300
3 | 400
(3 行)
-bash-4.2$
メタコマンド
メタコマンドとは
psqlで独自に使用できるコマンド。
「\」で始まり、改行で終了する。
psql自体を終了するときは\q
を使用する。
主なメタコマンド
コマンド | 取得する情報 |
---|---|
\l | データベースの一覧 |
\d | テーブル、ビュー、シーケンスの一覧 |
\dt | テーブルの一覧 |
\du | ユーザの一覧 |
\z(\dp) | テーブル、ビュー、シーケンスの一覧(アクセス権限付き) |
\? | メタコマンドの一覧 |
\h | SQLコマンドのヘルプ一覧 |
\! | OSコマンドの実行結果 |
使用例
\l
postgres=# \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限
-----------+----------+------------------+-------------+-------------------+-----------------------
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 行)
\d
postgres=# \d
リレーション一覧
スキーマ | 名前 | 型 | 所有者
----------+------+----------+----------
public | tbl | テーブル | postgres
(1 行)
\dt
postgres=# \dt
リレーション一覧
スキーマ | 名前 | 型 | 所有者
----------+------+----------+----------
public | tbl | テーブル | postgres
(1 行)
\du
postgres=# \du
ロール一覧
ロール名 | 属性 | 所属グループ
----------+----------------------------------------------------------------------------+--------------
postgres | スーパーユーザ, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {}
\z
postgres=# \z
アクセス権限
スキーマ | 名前 | 型 | アクセス権限 | 列の権限 | ポリシー
----------+------+----------+--------------+----------+----------
public | tbl | テーブル | | |
(1 行)
\?
postgres=# \?
一般
\copyright PostgreSQL の使い方と配布条件を表示します。
\crosstabview [列数] 問い合わせを実行し、結果をクロスタブに表示します。
\errverbose 最後に発生したエラーメッセージを冗長性最大で表示します。
\g [ファイル] または ; 問い合わせを実行(し、結果をファイルまたは |パイプ へ出力)します。
\gdesc 問い合わせを実行せずに結果の説明を行います
\gexec 問い合わせを実行し、結果の中の個々の値を実行します。
\gset [PREFIX] 問い合わせを実行して結果を psql 変数に格納します。
\gx [ファイル名] \g と同じですが、拡張出力モードで実行します。
\q psql を終了します。
\watch [秒数] 指定した秒数ごとに問い合わせを実行します。
~
\h
postgres=# \h
利用可能なヘルプ:
ABORT CREATE FOREIGN DATA WRAPPER DROP ROUTINE
ALTER AGGREGATE CREATE FOREIGN TABLE DROP RULE
ALTER COLLATION CREATE FUNCTION DROP SCHEMA
ALTER CONVERSION CREATE GROUP DROP SEQUENCE
ALTER DATABASE CREATE INDEX DROP SERVER
ALTER DEFAULT PRIVILEGES CREATE LANGUAGE DROP STATISTICS
ALTER DOMAIN CREATE MATERIALIZED VIEW DROP SUBSCRIPTION
~
postgres=# \h ABORT
コマンド: ABORT
説明: 現在のトランザクションを中止します
書式:
ABORT [ WORK | TRANSACTION ]
\!
postgres=# \! pwd
/var/lib/pgsql
コメント