作成済みのテーブル一覧を表示する

PostgreSQL では作成済みのテーブルを一覧を取得する方法としてメタコマンドとシステムカタログが利用できます。ここでは PostgreSQL で作成済みのテーブル一覧を取得する方法について解説します。

(Last modified: )

\dtコマンドを使用する

最初に psql のメタコマンドを使用する方法です。作成済みのテーブル一覧を取得するには、対象のデータベースに接続したあとで次のように実行してください。

\dt

\dtコマンドを使用する(1)

引数無しで実行した場合は public などスキーマ検索パスに設定されているスキーマに作成されているテーブルの一覧が表示されます。

スキーマ検索パスに設定されていないスキーマに作成したテーブルの一覧を取得するには、引数に スキーマ名.* と指定してください。

\dt スキーマ名.*

それでは myschema スキーマに作成したテーブルの一覧を取得してみます。

\dt myschema.*

\dtコマンドを使用する(2)

指定したスキーマに含まれるテーブル一覧が表示されました。

システムカタログpg_tablesから取得する

続いて PostgreSQL のシステムカタログの一つである pg_tables から取得する方法です。システムカタログとは PostgreSQL の管理システムが使用するテーブルで、データベースやテーブルなどの情報を管理するために使用しています。 pg_tables には次のようなカラムがあります。

名前データ型参照先説明
schemanamenamepg_namespace.nspnameスキーマ名
tablenamenamepg_class.relnameテーブル名
tableownernamepg_authid.rolname所有者
tablespacenamepg_tablespace.spcnameテーブルを含むテーブル空間の名前(データベースのデフォルトの場合はNULL)
hasindexesbooleanpg_class.relhasindexテーブルがインデックスを持っている(もしくは最近まで持っていた)なら真
hasrulesbooleanpg_class.relhasrulesテーブルにルールがある(もしくは以前あった)時は真
hastriggersbooleanpg_class.relhastriggersテーブルにトリガがある(もしくは以前あった)時は真
rowsecuritybooleanpg_class.relrowsecurityテーブルの行セキュリティが有効なら真

それでは対象のデータベースに接続したあとで、今回は pg_tables から次のカラムに関するデータを取得してみます。

select schemaname, tablename, tableowner from pg_tables;

システムカタログpg_tablesから取得する(1)

そのまま実行すると PostgreSQL のシステムが使用しているテーブル名もあわせて表示されるので、ユーザーが作成したテーブルだけを表示するには WHERE 句を付けて次のように実行してください。

select schemaname, tablename, tableowner 
  from pg_tables 
  where schemaname not like 'pg_%' and schemaname != 'information_schema';

システムカタログpg_tablesから取得する(2)

接続しているデータベースに作成されているテーブルの一覧を取得することができました。

-- --

PostgreSQL で作成済みのテーブル一覧を取得する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。