> 作業効率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以外にも以下のカラムがあります。

名前 データ型 参照先 説明
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句を使って条件指定を行います。

条件指定でテーブル一覧を取得するSQL文

select schemaname, tablename, tableowner from pg_tables where schemaname = ‘public’;

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

まとめ

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

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

 

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

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

この記事を書いた人

プログラムが大好きなパンダです。
主に C# を使ってデスクトップアプリやモバイルアプリなどを開発しています。

当ブログでは C# の使い方や WPF または .NET MAUI を使ったサンプルアプリなど発信しています。

コメント

コメントする

CAPTCHA


記事の内容