作成済みのテーブル一覧を表示する
PostgreSQL では作成済みのテーブルを一覧を取得する方法としてメタコマンドとシステムカタログが利用できます。ここでは PostgreSQL で作成済みのテーブル一覧を取得する方法について解説します。
(Last modified: )
\dtコマンドを使用する
最初に psql のメタコマンドを使用する方法です。作成済みのテーブル一覧を取得するには、対象のデータベースに接続したあとで次のように実行してください。
\dt
引数無しで実行した場合は public などスキーマ検索パスに設定されているスキーマに作成されているテーブルの一覧が表示されます。
スキーマ検索パスに設定されていないスキーマに作成したテーブルの一覧を取得するには、引数に スキーマ名.* と指定してください。
\dt スキーマ名.*
それでは myschema スキーマに作成したテーブルの一覧を取得してみます。
\dt myschema.*
指定したスキーマに含まれるテーブル一覧が表示されました。
システムカタログpg_tablesから取得する
続いて PostgreSQL のシステムカタログの一つである pg_tables から取得する方法です。システムカタログとは PostgreSQL の管理システムが使用するテーブルで、データベースやテーブルなどの情報を管理するために使用しています。 pg_tables には次のようなカラムがあります。
名前 | データ型 | 参照先 | 説明 |
---|---|---|---|
schemaname | name | pg_namespace.nspname | スキーマ名 |
tablename | name | pg_class.relname | テーブル名 |
tableowner | name | pg_authid.rolname | 所有者 |
tablespace | name | pg_tablespace.spcname | テーブルを含むテーブル空間の名前(データベースのデフォルトの場合はNULL) |
hasindexes | boolean | pg_class.relhasindex | テーブルがインデックスを持っている(もしくは最近まで持っていた)なら真 |
hasrules | boolean | pg_class.relhasrules | テーブルにルールがある(もしくは以前あった)時は真 |
hastriggers | boolean | pg_class.relhastriggers | テーブルにトリガがある(もしくは以前あった)時は真 |
rowsecurity | boolean | pg_class.relrowsecurity | テーブルの行セキュリティが有効なら真 |
それでは対象のデータベースに接続したあとで、今回は pg_tables から次のカラムに関するデータを取得してみます。
select schemaname, tablename, tableowner from pg_tables;
そのまま実行すると PostgreSQL のシステムが使用しているテーブル名もあわせて表示されるので、ユーザーが作成したテーブルだけを表示するには WHERE 句を付けて次のように実行してください。
select schemaname, tablename, tableowner from pg_tables where schemaname not like 'pg_%' and schemaname != 'information_schema';
接続しているデータベースに作成されているテーブルの一覧を取得することができました。
-- --
PostgreSQL で作成済みのテーブル一覧を取得する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。