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

広告
eyecatch

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

¥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 で作成済みのテーブル一覧を取得する方法について解説しました。

PostgreSQLの使い方の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。