OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

PostgreSQLのメタコマンド実行例

カテゴリ:OSSセットアップ | ソフトウェア:PostgreSQL | タグ:
最終更新日:2020/12/18 | 公開日:2013/08/15

目次

概要

 psqlでデータベースに接続した後で実行可能なPostgreSQL特有のメタコマンドについて紹介します。 代表的なメタコマンドについて実行例を表示していますが、PostgreSQLをインストールした直後に 実行したメタコマンドなので、ユーザオブジェクトはまだありません。 ほとんどがシステムオブジェクトの表示のみですが、ご了承ください。

構成

サーバ構成

OSバージョン

Red Hat Enterprise Linux 5.9 x86_64

パッケージ一覧

postgresql90-9.0.13-1PGDG.rhel5.x86_64.rpm
postgresql90-libs-9.0.13-1PGDG.rhel5.x86_64.rpm
postgresql90-server-9.0.13-1PGDG.rhel5.x86_64.rpm

手順

psqlの起動・停止

psqlの起動(データベースへの接続)

 SQLやメタコマンドを実行するためのpsqlを起動します。 psqlはOracleで言うSQl*Plusです。 PostgreSQLをインストールしたユーザで実行します。

# su - postgres
-bash-3.2$ psql
パスワード:
psql (9.0.13)
"help" でヘルプを表示します.

postgres=#

psqlの終了(データベースからの切断)

 psqlの終了はコマンドライン上で終了のためのメタコマンドを実行します。 exit と打っても終了しません。

postgres=# \q
-bash-3.2$

メタコマンド

 メタコマンドに S を付けた場合は、システムオブジェクトも表示します。

 メタコマンドに + を付けた場合は、追加情報を表示します。

 S と + を両方付けることもできます。

データベースの一覧を表示

 初期状態で表示されるのはテンプレート2つと空のDBです。 postgresという名のDBはPostgreSQLの管理情報が書き込まれているような雰囲気がありますが、 ただの空のDBです。Oracleでいうusers表領域です。

postgres-# \l
                                        データベース一覧
   名前    |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |      アクセス権
-----------+----------+------------------+----------+-------------------+-----------------------
 postgres  | postgres | UTF8             | C        | C                 |
 template0 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
(3 行)

postgres-# \l+
                                                                    データベース一覧
   名前    |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |      アクセス権       | サ
イズ  | テーブルスペース |           説明
-----------+----------+------------------+----------+-------------------+-----------------------+---
------+------------------+---------------------------
 postgres  | postgres | UTF8             | C        | C                 |                       | 53
69 kB | pg_default       |
 template0 | postgres | UTF8             | C        | C                 | =c/postgres          +| 52
73 kB | pg_default       |
           |          |                  |          |                   | postgres=CTc/postgres |
      |                  |
 template1 | postgres | UTF8             | C        | C                 | =c/postgres          +| 52
73 kB | pg_default       | default template database
           |          |                  |          |                   | postgres=CTc/postgres |
      |                  |
(3 行)

テーブル、ビュー、シーケンスの一覧を表示

 初期状態ではユーザオブジェクトは存在していません。 システムオブジェクトのみ表示されます。

postgres-# \d
postgres-# \d+
postgres-# \dS
                     リレーションの一覧
  スキーマ  |           名前           |    型    |  所有者
------------+--------------------------+----------+----------
 pg_catalog | pg_aggregate             | テーブル | postgres
 pg_catalog | pg_am                    | テーブル | postgres
(中略)
 pg_catalog | pg_user_mappings         | ビュー   | postgres
 pg_catalog | pg_views                 | ビュー   | postgres
(80 行)

postgres-# \dS+
                               リレーションの一覧
  スキーマ  |           名前           |    型    |  所有者  |   サイズ   | 説明
------------+--------------------------+----------+----------+------------+------
 pg_catalog | pg_aggregate             | テーブル | postgres | 8192 bytes |
 pg_catalog | pg_am                    | テーブル | postgres | 8192 bytes |
(中略)
 pg_catalog | pg_user_mappings         | ビュー   | postgres | 0 bytes    |
 pg_catalog | pg_views                 | ビュー   | postgres | 0 bytes    |
(80 行)

データベースユーザの一覧を表示

 初期状態ではスーパーユーザのみ存在しています。

postgres-# \du
                                ロール一覧
 ロール名 |                        属性                        | メンバー
----------+----------------------------------------------------+----------
 postgres | スーパーユーザ, ロールを作成できる, DBを作成できる | {}

postgres-# \du+
                                   ロール一覧
 ロール名 |                        属性                        | メンバー | 説明
----------+----------------------------------------------------+----------+------
 postgres | スーパーユーザ, ロールを作成できる, DBを作成できる | {}       |

postgres-# \duS
                                ロール一覧
 ロール名 |                        属性                        | メンバー
----------+----------------------------------------------------+----------
 postgres | スーパーユーザ, ロールを作成できる, DBを作成できる | {}

postgres-# \duS+
                                   ロール一覧
 ロール名 |                        属性                        | メンバー | 説明
----------+----------------------------------------------------+----------+------
 postgres | スーパーユーザ, ロールを作成できる, DBを作成できる | {}       |

スキーマの一覧を表示

 初期状態では情報スキーマやシステムカタログが存在しています。

postgres-# \dn
         スキーマ一覧
        名前        |  所有者
--------------------+----------
 information_schema | postgres
 pg_catalog         | postgres
 pg_toast           | postgres
 pg_toast_temp_1    | postgres
 public             | postgres
(5 行)

postgres-# \dn+
                                      スキーマ一覧
        名前        |  所有者  |      アクセス権      |               説明
--------------------+----------+----------------------+----------------------------------
 information_schema | postgres | postgres=UC/postgres+|
                    |          | =U/postgres          |
 pg_catalog         | postgres | postgres=UC/postgres+| system catalog schema
                    |          | =U/postgres          |
 pg_toast           | postgres |                      | reserved schema for TOAST tables
 pg_toast_temp_1    | postgres |                      |
 public             | postgres | postgres=UC/postgres+| standard public schema
                    |          | =UC/postgres         |
(5 行)

postgres-# \dnS
         スキーマ一覧
        名前        |  所有者
--------------------+----------
 information_schema | postgres
 pg_catalog         | postgres
 pg_toast           | postgres
 pg_toast_temp_1    | postgres
 public             | postgres
(5 行)

postgres-# \dnS+
                                      スキーマ一覧
        名前        |  所有者  |      アクセス権      |               説明
--------------------+----------+----------------------+----------------------------------
 information_schema | postgres | postgres=UC/postgres+|
                    |          | =U/postgres          |
 pg_catalog         | postgres | postgres=UC/postgres+| system catalog schema
                    |          | =U/postgres          |
 pg_toast           | postgres |                      | reserved schema for TOAST tables
 pg_toast_temp_1    | postgres |                      |
 public             | postgres | postgres=UC/postgres+| standard public schema
                    |          | =UC/postgres         |
(5 行)

テーブルの一覧を表示

 初期状態ではユーザテーブルは存在していません。

postgres-# \dt
postgres-# \dt+
postgres-# \dtS
                     リレーションの一覧
  スキーマ  |          名前           |    型    |  所有者
------------+-------------------------+----------+----------
 pg_catalog | pg_aggregate            | テーブル | postgres
 pg_catalog | pg_am                   | テーブル | postgres
(中略)
 pg_catalog | pg_type                 | テーブル | postgres
 pg_catalog | pg_user_mapping         | テーブル | postgres
(44 行)

postgres-# \dtS+
                               リレーションの一覧
  スキーマ  |          名前           |    型    |  所有者  |   サイズ   | 説明
------------+-------------------------+----------+----------+------------+------
 pg_catalog | pg_aggregate            | テーブル | postgres | 8192 bytes |
 pg_catalog | pg_am                   | テーブル | postgres | 8192 bytes |
(中略)
 pg_catalog | pg_type                 | テーブル | postgres | 56 kB      |
 pg_catalog | pg_user_mapping         | テーブル | postgres | 0 bytes    |
(44 行)

インデックスの一覧を表示

 初期状態ではユーザインデックスは存在していません。

postgres-# \di
postgres-# \di+
postgres-# \diS
                                            リレーションの一覧
  スキーマ  |                  名前                   |      型      |  所有者  |        テーブル
------------+-----------------------------------------+--------------+----------+-------------------------
 pg_catalog | pg_aggregate_fnoid_index                | インデックス | postgres | pg_aggregate
 pg_catalog | pg_am_name_index                        | インデックス | postgres | pg_am
(中略)
 pg_catalog | pg_user_mapping_oid_index               | インデックス | postgres | pg_user_mapping
 pg_catalog | pg_user_mapping_user_server_index       | インデックス | postgres | pg_user_mapping
(84 行)

postgres-# \diS+
                                                      リレーションの一覧
  スキーマ  |                  名前                   |      型      |  所有者  |        テーブル         |   サイズ   | 説明
------------+-----------------------------------------+--------------+----------+-------------------------+------------+------
 pg_catalog | pg_aggregate_fnoid_index                | インデックス | postgres | pg_aggregate            | 16 kB      |
 pg_catalog | pg_am_name_index                        | インデックス | postgres | pg_am                   | 16 kB      |
(中略)
 pg_catalog | pg_user_mapping_oid_index               | インデックス | postgres | pg_user_mapping         | 8192 bytes |
 pg_catalog | pg_user_mapping_user_server_index       | インデックス | postgres | pg_user_mapping         | 8192 bytes |
(84 行)

ビューの一覧を表示

 初期状態ではユーザビューは存在していません。

postgres-# \dv
postgres-# \dv+
postgres-# \dvS
                    リレーションの一覧
  スキーマ  |           名前           |   型   |  所有者
------------+--------------------------+--------+----------
 pg_catalog | pg_cursors               | ビュー | postgres
 pg_catalog | pg_group                 | ビュー | postgres
(中略)
 pg_catalog | pg_user_mappings         | ビュー | postgres
 pg_catalog | pg_views                 | ビュー | postgres
(36 行)

postgres=# \dvS+
                             リレーションの一覧
  スキーマ  |           名前           |   型   |  所有者  | サイズ  | 説明
------------+--------------------------+--------+----------+---------+------
 pg_catalog | pg_cursors               | ビュー | postgres | 0 bytes |
 pg_catalog | pg_group                 | ビュー | postgres | 0 bytes |
(中略)
 pg_catalog | pg_user_mappings         | ビュー | postgres | 0 bytes |
 pg_catalog | pg_views                 | ビュー | postgres | 0 bytes |
(36 行)

シーケンスの一覧を表示

 初期状態ではシーケンスは存在していません。

postgres-# \ds
postgres-# \ds+
postgres-# \dsS
postgres-# \dsS+

システムカタログの一覧を表示

 システムカタログには大事な管理情報が格納されています。 間違って書き換えないように注意してください。

postgres-# \dS
postgres=# \dS
                     リレーションの一覧
  スキーマ  |           名前           |    型    |  所有者
------------+--------------------------+----------+----------
 pg_catalog | pg_aggregate             | テーブル | postgres
 pg_catalog | pg_am                    | テーブル | postgres
(中略)
 pg_catalog | pg_user_mappings         | ビュー   | postgres
 pg_catalog | pg_views                 | ビュー   | postgres
(80 行)

postgres-# \dS+
                               リレーションの一覧
  スキーマ  |           名前           |    型    |  所有者  |   サイズ   | 説明
------------+--------------------------+----------+----------+------------+------
 pg_catalog | pg_aggregate             | テーブル | postgres | 8192 bytes |
 pg_catalog | pg_am                    | テーブル | postgres | 8192 bytes |
(中略)
 pg_catalog | pg_user_mappings         | ビュー   | postgres | 0 bytes    |
 pg_catalog | pg_views                 | ビュー   | postgres | 0 bytes    |
(80 行)

postgres-# \dSS
                     リレーションの一覧
  スキーマ  |           名前           |    型    |  所有者
------------+--------------------------+----------+----------
 pg_catalog | pg_aggregate             | テーブル | postgres
 pg_catalog | pg_am                    | テーブル | postgres
(中略)
 pg_catalog | pg_user_mappings         | ビュー   | postgres
 pg_catalog | pg_views                 | ビュー   | postgres
(80 行)

postgres-# \dSS+
                               リレーションの一覧
  スキーマ  |           名前           |    型    |  所有者  |   サイズ   | 説明
------------+--------------------------+----------+----------+------------+------
 pg_catalog | pg_aggregate             | テーブル | postgres | 8192 bytes |
 pg_catalog | pg_am                    | テーブル | postgres | 8192 bytes |
(中略)
 pg_catalog | pg_user_mappings         | ビュー   | postgres | 0 bytes    |
 pg_catalog | pg_views                 | ビュー   | postgres | 0 bytes    |
(80 行)

関数の一覧を表示

 初期状態ではユーザ関数は存在していません。 ただシステム関数は大量に存在しています。

postgres-# \df
                        関数一覧
 スキーマ | 名前 | 結果のデータ型 | 引数のデータ型 | 型
----------+------+----------------+----------------+----
(0 行)

postgres-# \df+
                                               関数一覧
 スキーマ | 名前 | 結果のデータ型 | 引数のデータ型 | 型 | 揮発性 | 所有者 | 言語 | ソースコード | 説明
----------+------+----------------+----------------+----+--------+--------+------+--------------+------
(0 行)

postgres-# \dfS

                                                                                関数一覧
  スキーマ  |                     名前                     |          結果のデータ型           |
                                                                                                                 引数のデータ型

             |          型
------------+----------------------------------------------+-----------------------------------+------------------------------------
------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------
-------------+----------------------
 pg_catalog | RI_FKey_cascade_del                          | trigger                           |


             | trigger(トリガ)
 pg_catalog | RI_FKey_cascade_upd                          | trigger                           |


             | trigger(トリガ)
(後略)
postgres-# \dfS+


                                                                                                               関数一覧
  スキーマ  |                     名前                     |          結果のデータ型           |
                                                                                                                 引数のデータ型

             |          型          | 揮発性 |  所有者  |   言語   |
                    ソースコード                                                                                    |
                                       説明
------------+----------------------------------------------+-----------------------------------+------------------------------------
------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------
-------------+----------------------+--------+----------+----------+----------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------+---------------
--------------------------------------------------------------------------------------------------
 pg_catalog | RI_FKey_cascade_del                          | trigger                           |


             | trigger(トリガ)    | 揮発性 | postgres | internal | RI_FKey_cascade_del
                                                                                                                    | referential in
tegrity ON DELETE CASCADE
 pg_catalog | RI_FKey_cascade_upd                          | trigger                           |


             | trigger(トリガ)    | 揮発性 | postgres | internal | RI_FKey_cascade_upd
                                                                                                                    | referential in
tegrity ON UPDATE CASCADE
(後略)

テーブル、ビュー、シーケンスの一覧と、それらに設定されているテーブル単位の権限を表示

 オブジェクトに対するアクセス権を確認できます。 初期状態ではオブジェクトが存在していません。

postgres-# \dp
                         アクセス権
 スキーマ | 名前 | 型 | アクセス権 | アクセス権限を剥奪する
----------+------+----+------------+------------------------
(0 行)

postgres-# \dp+
                         アクセス権
 スキーマ | 名前 | 型 | アクセス権 | アクセス権限を剥奪する
----------+------+----+------------+------------------------
(0 行)

postgres-# \dpS
                         アクセス権
 スキーマ | 名前 | 型 | アクセス権 | アクセス権限を剥奪する
----------+------+----+------------+------------------------
(0 行)

postgres-# \dpS+
                         アクセス権
 スキーマ | 名前 | 型 | アクセス権 | アクセス権限を剥奪する
----------+------+----+------------+------------------------
(0 行)

データベースユーザのパスワードを変更

 データベースユーザのパスワードを変更することができます。 ユーザ名を指定しない場合はログインしているデータベースユーザのパスワードを変更します。 引数でデータベースユーザを指定した場合は、そのユーザのパスワードを変更します。

postgres-# \password
新しいパスワード:     ←パスワードを入力
もう一度入力してください:←上と同じパスワードを入力
postgres-# \password postgres
新しいパスワード:     ←パスワードを入力
もう一度入力してください:←上と同じパスワードを入力

メタコマンドの一覧を表示

 他にもpsqlのメタコマンドはたくさん準備されています。 メタコマンドの一覧を表示するメタコマンドも準備されていますので、 分からなくなったときに使えます。

postgres-# \?
一般
  \copyright             PostgreSQL の使い方と配布条件を表示
  \g [ファイル] または ';'  クエリー実行(し、結果をファイルまたは |パイプ へ書き出す)
  \h [名前]              SQL コマンドの文法ヘルプ、* で全コマンド
  \q                     psql を終了する

クエリーバッファ
  \e [ファイル]          現在のクエリーバッファ(やファイル)を外部エディタで編集する
  \e [関数名]            関数定義を外部エディタで編集
  \p                     クエリーバッファの内容を表示する
  \r                     クエリーバッファをリセット(クリア)する
  \s [ファイル]          ヒストリを表示またはファイルに保存する
  \w ファイル            クエリーバッファの内容をファイルに書き出す

入出力
  \copy ...              クライアントホストに対し、データストリーム
                          を使って SQL コピーを行う
  \echo [文字列]         文字列を標準出力に書き出す
  \i ファイル            ファイルからコマンドを読み込んで実行する
  \o [ファイル]          すべてのクエリーの結果をファイルまたは |パイプ へ送る
  \qecho [文字列]        文字列をクエリー出力ストリームに出力(\o を参照)

情報
  (修飾子: S = システムオブジェクトを表示 + = 付加情報)
  \d[S+]                 テーブル、ビュー、シーケンスの一覧を表示する
  \d[S+]  名前           テーブル、ビュー、シーケンス、インデックスの説明を表示する
  \da[S]  [パターン]     集約関数の一覧を表示する
  \db[+]  [パターン]     テーブルスペースの一覧を表示する
  \dc[S]  [パターン]     変換ルールの一覧を表示する
  \dC     [パターン]     キャストの一覧を表示する
  \dd[S]  [パターン]     オブジェクトのコメントを表示する
  \ddp    [パターン]     デフォルト権限の一覧を表示する
  \dD[S]  [パターン]     ドメインの一覧を表示する
  \des[+] [パターン]     外部サーバーの一覧を表示する
  \deu[+] [パターン]     ユーザマッピングの一覧を表示する
  \dew[+] [パターン]     外部データラッパーの一覧を表示する
  \df[antw][S+] [パターン]      関数(集約/通常/トリガー/ウィンドウのみ)の一覧を表示する
  \dF[+]  [パターン]     テキスト検索設定の一覧を表示する
  \dFd[+] [パターン]     テキスト検索用辞書の一覧を表示する
  \dFp[+] [パターン]     テキスト検索用パーサーの一覧を表示する
  \dFt[+] [パターン]     テキスト検索用テンプレートの一覧を表示する
  \dg[+]  [パターン]     ロール(グループ)の一覧を表示する
  \di[S+] [パターン]     インデックスの一覧を表示する
  \dl                    ラージオブジェクトの一覧を表示する。\lo_list と同じ。
  \dn[+]  [パターン]     スキーマの一覧を表示する
  \do[S]  [名前]         演算子の一覧を表示する
  \dp     [パターン]     テーブル、ビュー、シーケンスのアクセス権一覧を表示する
  \drds [パターン1 [パターン2]] データベース毎のロール(ユーザー)設定の一覧を表示する
  \ds[S+] [パターン]     シーケンスの一覧を表示する
  \dt[S+] [パターン]     テーブルの一覧を表示する
  \dT[S+] [パターン]     データ型の一覧を表示する
  \du[+]  [パターン]     ロール(ユーザー)の一覧を表示する
  \dv[S+] [パターン]     ビューの一覧を表示する
  \l[+]                  データベースの一覧を表示する
  \z      [パターン]     \dp と同じ

書式設定
  \a                     出力モードの 'unaligned' / 'aligned' を切り替える
  \C タイトル            テーブルのタイトルをセットする。指定がなければ解除
  \f [文字列]            クエリー出力の際に桁揃えを行わない(unaligned)場合に
                          使用するフィールド区切り文字を表示または設定する
  \H                     HTML の出力モードを切り替える(現在: オフ)
  \pset 名前 [値]        テーブル出力のオプションを設定する
                         (名前 := {format|border|expanded|fieldsep|footer|null|
                         numericlocale|recordsep|tuples_only|title|tableattr|pager})
  \t [on|off]            行のみを表示するか? (現在: オフ)
  \T [文字列]            HTML の <table> タグの属性をセット。引数がなければ解除
  \x [on|off]            拡張出力の切り替え(現在: オフ)

接続
  \c[onnect] [DB名|- ユーザ名|- ホスト名|- ポート番号|-]
                         新しいデータベースに接続する (現在: "postgres")
  \encoding [エンコーディング]
                         クライアントのエンコーディングを表示またはセット
  \password [ユーザ名]   ユーザのパスワードを安全に変更する

オペレーティングシステム
  \cd [DIR]              カレントディレクトリを変更
  \timing [on|off]       コマンドのタイミングを切り替える(現在: オフ)
  \! [コマンド]          シェルでコマンドを実行、もしくは会話型シェルを起動

変数
  \prompt [テキスト] 変数名    ユーザに内部変数をセットするよう促す
  \set [変数名 [値]]
                         内部変数の値をセット。引数がない場合は一覧表示。
  \unset 変数名          内部変数を削除する

ラージオブジェクト
  \lo_export LOBOID ファイル名
  \lo_import ファイル名 [コメント]
  \lo_list
  \lo_unlink LOBOID     ラージオブジェクトの操作