PostgreSQL | psql を使用して PostgreSQL に接続 | psql メタコマンドの一覧と実行方法

psql を使用して PostgreSQL に接続した後に実行できる psql メタコマンドの使い方と、コマンド一覧について説明する。

psql コマンドの実行方法

psql には、PostgreSQL に接続して実行できるコマンドが多数用意されている。コマンド一覧を確認するには、次のように実行する。psql コマンド一覧と使い方が表示される。コマンド一覧はこのページの最後にも掲載している。

\?
postgres=# \?
一般
  \copyright             PostgreSQL の使用法と著作権情報を表示
  \crosstabview [列]     クエリを実行し、ピボットテーブル形式でデータを表示
  \errverbose            直近のエラーを最大詳細表示で表示
  \g [FILE] または ;     クエリを実行(結果をファイルまたは |パイプへ送信)
  \gdesc                 クエリを実行せずに結果の列とデータ型を出力
  \gexec                 クエリを実行し、その結果をそれぞれ実行
  \gset [PREFIX]         クエリ実行後、その結果を psql 変数に保存
  \gx [FILE]             \g と同じだが、出力を拡張モードに強制
  \q                     psql を終了
  \watch [SEC]           指定秒ごとにクエリを実行

ヘルプ
  \? [commands]          psql バックスラッシュコマンドの説明
  \? options             psql コマンドラインオプションのヘルプを表示
  \? variables           psql 環境設定変数の説明を表示
  \h [NAME]              SQL コマンド構文のヘルプ、すべて表示するには * を入力

Windows の場合、psql コマンドはバックスラッシュ (\) で始まる。たとえば、psql を終了して PostgreSQL との接続を切るときに使用する \qpsql コマンドの 1 つである。

\q
C:\>psql -U postgres
postgres ユーザーのパスワード:
psql (12.2)
ヘルプを表示するには "help" と入力してください。

postgres=# \q

C:\>

psql コマンドを使用して、作成済みデータベースの一覧を取得できる。

\l
postgres=# \l
postgres=# \l
                                      データベース一覧
   名前    |  所有者  | エンコーディング |     Collate      |      Ctype       |      アクセス権限
-----------+----------+------------------+------------------+------------------+-----------------------
 devkuma   | postgres | UTF8             | Korean_Korea.949 | Korean_Korea.949 |
 postgres  | postgres | UTF8             | Korean_Korea.949 | Korean_Korea.949 |
 template0 | postgres | UTF8             | Korean_Korea.949 | Korean_Korea.949 | =c/postgres          +
           |          |                  |                  |                  | postgres=CTc/postgres
 template1 | postgres | UTF8             | Korean_Korea.949 | Korean_Korea.949 | =c/postgres          +
           |          |                  |                  |                  | postgres=CTc/postgres
(4 行)

現在接続しているデータベースとは別のデータベースにも接続できる。

\c devkuma
postgres=# \c devkuma
接続情報: データベース="devkuma", ユーザー="postgres".
devkuma=#

psql コマンド一覧

一般:

コマンド 説明
\copyright PostgreSQL の使用法と著作権情報を表示
\crosstabview [列] クエリを実行し、ピボットテーブル形式でデータを表示
\errverbose 直近のエラーを最大詳細表示で表示
\g [FILE] または ; クエリを実行し、結果をファイルまたは | パイプへ送信
\gdesc クエリを実行せずに結果の列とデータ型を出力
\gexec クエリを実行し、その結果をそれぞれ実行
\gset [PREFIX] クエリ実行後、その結果を psql 変数に保存
\gx [FILE] \g と同じだが、出力を拡張モードに強制
\q psql を終了
\watch [SEC] 指定秒ごとにクエリを実行

ヘルプ:

コマンド 説明
? [commands] psql バックスラッシュコマンドの説明
? options psql コマンドラインオプションのヘルプを表示
? variables psql 環境設定変数の説明を表示
\h [NAME] SQL コマンド構文のヘルプ、すべて表示するには * を入力

クエリバッファ:

コマンド 説明
\e [FILE] [LINE] 外部エディタでクエリバッファまたはファイルを編集
\ef [FUNCNAME [LINE]] 外部エディタで該当する関数の内容を編集
\ev [VIEWNAME [LINE]] 外部エディタで該当するビュー定義を編集
\p クエリバッファの内容を表示
\r クエリバッファを初期化してすべて消去
\w FILE クエリバッファをファイルに書き込む

入力/出力:

コマンド 説明
\copy … クライアントホスト上のデータを使用して SQL COPY コマンドを実行
\echo [STRING] 文字列を標準出力に書き込む
\i FILE ファイルからコマンドを実行
\ir FILE \i と同じだが、パスは現在位置からの相対パス
\o [FILE] すべてのクエリ結果をファイルまたは | パイプへ送信
\qecho [STRING] 文字列をクエリ出力ストリームに書き込む。\o 参照

条件文:

コマンド 説明
\if EXPR 条件文を開始
\elif EXPR else if 節を開始
\else 条件文のその他の条件
\endif 条件文を終了

情報表示:

(オプション: S = システムオブジェクトを表示、+ = 追加の詳細情報)

コマンド 説明
\d[S+] テーブル、ビュー、シーケンス一覧
\d[S+] NAME テーブル、ビュー、シーケンス、インデックスの説明
\da[S] [PATTERN] 集約関数一覧
\dA[+] [PATTERN] アクセスメソッド一覧
\db[+] [PATTERN] テーブルスペース一覧
\dc[S+] [PATTERN] 文字セット変換一覧
\dC[+] [PATTERN] 型キャスト一覧
\dd[S] [PATTERN] 他では表示されないオブジェクト説明を表示
\dD[S+] [PATTERN] ドメイン一覧
\ddp [PATTERN] 既定アクセス権限一覧
\dE[S+] [PATTERN] 外部テーブル一覧
\det[+] [PATTERN] 外部テーブル一覧
\des[+] [PATTERN] 外部サーバー一覧
\deu[+] [PATTERN] ユーザーマッピング一覧
\dew[+] [PATTERN] 外部データラッパー一覧
\df[anptw][S+] [PATRN] 関数一覧 [aggregate/normal/procedure/trigger/window]
\dF[+] [PATTERN] テキスト検索設定一覧
\dFd[+] [PATTERN] テキスト検索辞書一覧
\dFp[+] [PATTERN] テキスト検索パーサ一覧
\dFt[+] [PATTERN] テキスト検索テンプレート一覧
\dg[S+] [PATTERN] ロール一覧
\di[S+] [PATTERN] インデックス一覧
\dl ラージオブジェクト一覧、\lo_list と同じ
\dL[S+] [PATTERN] 手続き言語一覧
\dm[S+] [PATTERN] マテリアライズドビュー一覧
\dn[S+] [PATTERN] スキーマ一覧
\do[S] [PATTERN] 演算子一覧
\dO[S+] [PATTERN] 照合順序一覧
\dp [PATTERN] テーブル、ビュー、シーケンスのアクセス権限一覧
\dP[itn+] [PATTERN] パーティションリレーション一覧 [インデックス/テーブルのみ] [n=nested]
\drds [PATRN1 [PATRN2]] データベース別ロール設定一覧
\dRp[+] [PATTERN] レプリケーションパブリケーション一覧
\dRs[+] [PATTERN] レプリケーションサブスクリプション一覧
\ds[S+] [PATTERN] シーケンス一覧
\dt[S+] [PATTERN] テーブル一覧
\dT[S+] [PATTERN] データ型一覧
\du[S+] [PATTERN] ロール一覧
\dv[S+] [PATTERN] ビュー一覧
\dx[+] [PATTERN] 拡張モジュール一覧
\dy [PATTERN] イベントトリガー一覧
\l[+] [PATTERN] データベース一覧
\sf[+] 関数名 関数定義を表示
\sv[+] ビュー名 ビュー定義を表示

出力形式:

コマンド 説明
\a 整列しない出力モードと整列した出力モードを切り替える
\C [STRING] テーブルタイトルを設定、値がない場合は解除
\f [STRING] unaligned 出力のフィールド区切り文字を表示または設定
\H HTML 出力モードを切り替える(現在 off)
\pset [名前 [値]] テーブル出力オプションを設定
border|columns|csv_fieldsep|expanded|fieldsep|
fieldsep_zero|footer|format|linestyle|null|
numericlocale|pager|pager_min_lines|recordsep|
recordsep_zero|tableattr|title|tuples_only|
unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle
\t [on|off] 行だけを表示(現在 off)
\T [STRING] HTML <table> タグ属性を設定、空の場合は解除
\x [on|off|auto] 拡張出力を切り替える(現在 off)

接続:

コマンド 説明
\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo} 新しいデータベースに接続(現在 “postgres”)
\conninfo 現在のデータベース接続情報を表示
\encoding [ENCODING] クライアントエンコーディングを表示または設定
\password [USERNAME] ユーザーのパスワードを安全に変更

オペレーティングシステム:

コマンド 説明
\cd [DIR] 現在の作業ディレクトリを変更
\setenv NAME [VALUE] 環境変数を設定または解除
\timing [on|off] コマンド実行時間の表示を切り替える(現在 off)
! [COMMAND] シェルコマンドを実行、または対話式シェルを開始

変数:

コマンド 説明
\prompt [TEXT] NAME ユーザーに内部変数の設定を促す
\set [NAME [VALUE]] 内部変数を設定、未指定の場合はすべての変数一覧を表示
\unset NAME 内部変数の設定を解除して削除

ラージオブジェクト:

コマンド 説明
\lo_export LOBOID FILE ラージオブジェクト操作
\lo_import FILE [COMMENT] ラージオブジェクト操作
\lo_list ラージオブジェクト操作
\lo_unlink LOBOID ラージオブジェクト操作