web-dev-qa-db-ja.com

postgresql information_schemaのすべてのテーブルをリストする

PostgreSQLのinformation_schema内のすべてのテーブルをリストする最良の方法は何ですか?

明確にするために、空のDBを使用しています(独自のテーブルは追加していません)が、information_schema構造内のすべてのテーブルを表示したいです。

146
littleK

特定のデータベースのPostgresで管理されているすべてのテーブルのリストを取得するには、select * from information_schema.tablesを実行するだけです。

where table_schema = 'information_schema'を追加して、情報スキーマ内のテーブルのみを表示することもできます。

209
RodeoClown

テーブルをリストするには、次を使用します。

SELECT table_name FROM information_schema.tables WHERE table_schema='public'

作成したテーブルのみがリストされます。

83
phsaires
\dt information_schema.

psql内から、問題ないはずです。

37
user80168

"\ z" COMMANDは、インタラクティブpsqlセッション内でテーブルをリストする良い方法でもあります。

例えば。

# psql -d mcdb -U admin -p 5555
mcdb=# /z
                           Access privileges for database "mcdb"
 Schema |              Name              |   Type   |           Access privileges
--------+--------------------------------+----------+---------------------------------------
 public | activities                     | table    |
 public | activities_id_seq              | sequence |
 public | activities_users_mapping       | table    |
[..]
 public | v_schedules_2                  | view     | {admin=arwdxt/admin,viewuser=r/admin}
 public | v_systems                      | view     |
 public | vapp_backups                   | table    |
 public | vm_client                      | table    |
 public | vm_datastore                   | table    |
 public | vmentity_hle_map               | table    |
(148 rows)
12
Chris Shoesmith

また使用してもよい

select * from pg_tables where schemaname = 'information_schema'

一般に、pg *テーブルを使用すると、データベースのすべてを見ることができ、権限に制約されることはありません(もちろん、テーブルにアクセスできる場合)。

8
Timofey

Postgresqlのプライベートスキーマ'xxx'の場合:

SELECT table_name FROM information_schema.tables 
 WHERE table_schema = 'xxx' AND table_type = 'BASE TABLE'

table_type = 'BASE TABLE'がなければ、テーブルとviewsをリストします

5
germanlinux

1. information_schema.tablesからすべてのテーブルとビューを取得し、information_schemaとpg_catalogのものを含めます。

select * from information_schema.tables

2.特定のスキーマに属するテーブルとビューを取得する

select * from information_schema.tables
    where table_schema not in ('information_schema', 'pg_catalog')

3.テーブルのみを取得する(ほぼ\ dt)

select * from information_schema.tables
    where table_schema not in ('information_schema', 'pg_catalog') and
    table_type = 'BASE TABLE'
2
hzh

迅速でダーティなワンライナークエリが必要な場合:

select * from information_schema.tables

Psqlを開かなくても、クエリツールで直接実行できます。

(他の記事では、より具体的なinformation_schemaクエリをニースしていますが、初心者として、この1行のクエリは、テーブルを把握するのに役立ちます)

1
Sally Levesque