PostgreSQL の DB に作成されているテーブル情報の一覧を取得する方法について紹介します。
PostgreSQL のデータベースに登録したテーブル名をさっと取得したい時やテーブル名の検索ができるので覚えておくと便利です。
最後まで読んでみてください。
テーブル一覧を取得する方法
この記事では2種類の方法を紹介します。
\dtコマンドで取得する
PostgreSQL のコマンドラインを使用する方法です。
次のコマンドを使えば、データベースに作成したテーブルの一覧を取得することが可能です。
Windows OS の場合は、PostgreSQL のコマンドをコマンドプロンプトで実行できるように設定が必要です。設定が完了していない場合は以下のリンクから設定を行っておきましょう。
コマンドプロンプトを起動します。PostgreSQL にログインし、テーブルを取得したいデータベースへ接続を行います。それらを行うコマンドが以下です。
ここでは事前に「sampledb」という名前でデータベースを作成しています。「sampledb」の部分は、お使いのデータベース名に変更をしましょう。
これで準備が整いました。
先ほど紹介した「テーブル一覧を取得するコマンド」を実行してみましょう。実行結果は次のようになります。
このコマンドに引数無しで実行した場合、「public」なスキーマに作成されているテーブルの一覧が表示されます。
上記以外の「private」なスキーマに作成されているテーブルを一覧を取得するには、引数にスキーマ名を指定します。
実行結果は次のようになります。
システムカタログ pg_tables で取得する
PostgreSQL のシステムカタログにあるテーブルに関する情報をまとめた「pg_tables」から情報を取得する方法です。
次の SQL 文を使えば、テーブル情報の一覧を取得することが可能です。
実行結果は次のようになります。
pg_tables には、schemaname や tablename、tableowner 以外にも以下のカラムがあります。
名前 | データ型 | 参照先 | 説明 |
---|---|---|---|
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 | テーブルの行セキュリティが有効なら真 |
\dt コマンドとは異なり、データベースに作成されているテーブルやシステムが使用しているテーブル名の全てが取得されていることが分かります。
public なスキーマだけを表示するには、SQL 文の WHERE 句を使って条件指定を行います。
実行結果は次のようになります。
まとめ
PostgreSQL の DB に作成されているテーブル情報の一覧を取得する方法について紹介しました。
PostgreSQL のテーブルの参照方法については、「\dt」コマンドを利用するか、もしくは「システムカタログ pg_tables 」を利用しましょう。
以上、最後まで読んで頂きありがとうございました。