情報スキーマのテーブルを制覇せよ!PostgreSQLの全貌を暴く5つの方法
PostgreSQL 情報スキーマの全てのテーブルを一覧表示する
このチュートリアルでは、以下の方法で PostgreSQL 情報スキーマの全てのテーブルを一覧表示する方法を解説します。
方法 1: psql コマンドを使用する
- psql コマンドを使用して PostgreSQL サーバーに接続します。
psql -d <データベース名>
\dt
コマンドを実行します。
\dt
このコマンドは、現在のデータベース内の全てのテーブルを一覧表示します。
- 出力結果を確認します。
出力結果には、以下の情報が表示されます。
- テーブル名
- スキーマ名
- テーブル所有者
- テーブルの種類 (テーブル、ビュー、マテリアライズドビューなど)
- 列数
- テーブルサイズ
方法 2: SQL クエリを使用する
- 以下の SQL クエリを実行します。
SELECT *
FROM information_schema.tables;
このクエリは、情報スキーマの tables
テーブルから全てのデータを取得します。
出力結果は、\dt
コマンドで表示される情報と同じです。
方法 3: 情報スキーマビューを使用する
PostgreSQL 情報スキーマには、views
というビューが用意されています。このビューには、情報スキーマ内の全てのビューの情報が格納されています。
以下の SQL クエリを実行することで、情報スキーマ内の全てのビューを一覧表示できます。
SELECT *
FROM information_schema.views;
補足
\dt
コマンドは、\dt+
というエイリアスも持ちます。\dt+
コマンドは、より詳細な情報を表示します。- 上記の方法は、PostgreSQL 9.0 以降で使用できます。
上記の方法をより詳しく解説します。
方法 1: psql コマンドを使用する
psql -d <データベース名>
\dt
例
postgres=# \dt
List of relations
Schema | Name | Type | Owner | Mode | Size | Description
-------+------+------+-------+------+------+-------------
public | テーブル1 | table | postgres | 644 | 1024 | テーブル1の説明
public | テーブル2 | table | postgres | 644 | 2048 | テーブル2の説明
(2 rows)
オプション
\dt
コマンドには、以下のオプションが用意されています。
-v
オプション: 詳細な情報を表示します。-s
オプション: 特定のスキーマのテーブルのみを表示します。
postgres=# \dt -v
List of relations
Schema | Name | Type | Owner | Mode | Size | Description
-------+------+------+-------+------+------+-------------
public | テーブル1 | table | postgres | 644 | 1024 | テーブル1の説明
-------+------+------+-------+------+------+-------------
Column | Type | Modifiers | Storage | Description
----------+------+-----------+---------+-------------
id | integer | not null | plain |
name | text | | plain |
age | integer | | plain |
(2 rows)
終了するには、\q コマンドを実行します。
postgres=# \q
方法 2: SQL クエリを使用する
**1. 以下の SQL クエリを実行
方法 2: SQL クエリを使用する
SELECT *
FROM information_schema.tables;
postgres=# SELECT * FROM information_schema.tables;
schemaname | tablename | tableowner | tablespace | hasindexes | hasrules | hastriggers | ispartition | istemporary | description
-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------
public | テーブル1 | postgres | | t | f | f | f | f |
public | テーブル2 | postgres | | t | f | f | f | f |
(2 rows)
SELECT
クエリに WHERE
句を追加することで、特定の条件に合致するテーブルのみを表示することができます。
SELECT *
FROM information_schema.tables
WHERE schemaname = 'public'
AND tablename LIKE 'テーブル%';
このクエリは、public
スキーマに属し、テーブル
で始まる名前を持つ全てのテーブルを表示します。
方法 3: 情報スキーマビューを使用する
SELECT *
FROM information_schema.views;
postgres=# SELECT * FROM information_schema.views;
schemaname | viewname | viewowner | definition |
-------------+-------------+-------------+-------------
public | ビュー1 | postgres | SELECT * FROM テーブル1; |
public | ビュー2 | postgres | SELECT * FROM テーブル2; |
(2 rows)
SELECT *
FROM information_schema.views
WHERE schemaname = 'public'
AND viewname LIKE 'ビュー%';
上記の方法のいずれかを使用して、PostgreSQL 情報スキーマの全てのテーブルを一覧表示することができます。
PostgreSQL 情報スキーマの全てのテーブルを一覧表示する他の方法
pgAdmin4 などの GUI ツールを使用すると、データベース内のテーブルを簡単に一覧表示できます。
手順
- ツリービューで、データベースを選択します。
- "Tables" フォルダを展開します。
- フォルダ内のテーブルが一覧表示されます。
Python スクリプトを使用する
以下の Python スクリプトを使用して、情報スキーマの全てのテーブルを一覧表示することができます。
import psycopg2
# データベースへの接続
conn = psycopg2.connect(
database="test",
user="postgres",
password="postgres",
host="localhost",
port="5432",
)
# カーソルの取得
cur = conn.cursor()
# テーブル一覧の取得
cur.execute("SELECT * FROM information_schema.tables;")
# 結果の出力
for row in cur:
print(row)
# カーソルのクローズ
cur.close()
# 接続のクローズ
conn.close()
その他のツール
- dbeaver
- SQL Workbench/J
- TOAD
自分に合った方法を選択してください。
sql postgresql information-schema