> 作業効率UP!! オススメのモバイルモニターを紹介

【PostgreSQL】テーブル一覧を取得する方法

当ページのリンクには広告が含まれています。
  • URLをコピーしました!

PostgreSQL の DB に作成されているテーブル情報の一覧を取得する方法について紹介します。

PostgreSQL のデータベースに登録したテーブル名をさっと取得したい時やテーブル名の検索ができるので覚えておくと便利です。

テーブル情報を取得する方法を知りたい方におすすめの記事です。

最後まで読んでみてください。

テーブル一覧を取得する方法

この記事では2種類の方法を紹介します。

\dtコマンドで取得する

PostgreSQL のコマンドラインを使用する方法です。

次のコマンドを使えば、データベースに作成したテーブルの一覧を取得することが可能です。

テーブル一覧を取得するコマンド
¥dt

Windows OS の場合は、PostgreSQL のコマンドをコマンドプロンプトで実行できるように設定が必要です。設定が完了していない場合は以下のリンクから設定を行っておきましょう。

>>コマンドラインを実行する方法を確認する

コマンドプロンプトを起動します。PostgreSQL にログインし、テーブルを取得したいデータベースへ接続を行います。それらを行うコマンドが以下です。

ここでは事前に「sampledb」という名前でデータベースを作成しています。「sampledb」の部分は、お使いのデータベース名に変更をしましょう。

ログイン&データベース接続コマンド
psql -U postgres -d sampledb

これで準備が整いました。

先ほど紹介した「テーブル一覧を取得するコマンド」を実行してみましょう。実行結果は次のようになります。

このコマンドに引数無しで実行した場合、「public」なスキーマに作成されているテーブルの一覧が表示されます。

上記以外の「private」なスキーマに作成されているテーブルを一覧を取得するには、引数にスキーマ名を指定します。

テーブル一覧を取得するコマンド
¥dt sampleschema.*

実行結果は次のようになります。

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

PostgreSQL のシステムカタログにあるテーブルに関する情報をまとめた「pg_tables」から情報を取得する方法です。

次の SQL 文を使えば、テーブル情報の一覧を取得することが可能です。

テーブル情報一覧を取得するSQL文
select schemaname, tablename, tableowner from pg_tables;

実行結果は次のようになります。

pg_tables には、schemaname や tablename、tableowner 以外にも以下のカラムがあります。

名前データ型参照先説明
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テーブルの行セキュリティが有効なら真

\dt コマンドとは異なり、データベースに作成されているテーブルやシステムが使用しているテーブル名の全てが取得されていることが分かります。

public なスキーマだけを表示するには、SQL 文の WHERE 句を使って条件指定を行います。

条件指定でテーブル一覧を取得するSQL文
select schemaname, tablename, tableowner from pg_tables where schemaname = ‘public’;

実行結果は次のようになります。

まとめ

PostgreSQL の DB に作成されているテーブル情報の一覧を取得する方法について紹介しました。

PostgreSQL のテーブルの参照方法については、「\dt」コマンドを利用するか、もしくは「システムカタログ pg_tables 」を利用しましょう。

以上、最後まで読んで頂きありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!