245

PostgreSQLのinformation_schema内のすべてのテーブルを一覧表示するための最良の方法は何ですか?

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

4

8 に答える 8

334

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

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

于 2010-02-16T22:08:06.467 に答える
140

テーブルを一覧表示するには、次を使用します。

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

作成したテーブルのみが一覧表示されます。

于 2012-08-30T13:52:14.380 に答える
48
\dt information_schema.

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

于 2010-02-16T22:31:15.303 に答える
17

" \z" コマンドは、インタラクティブな 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)
于 2014-07-07T06:25:27.283 に答える
13

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'
于 2019-01-21T01:34:21.773 に答える
11

あなたも使うかもしれません

select * from pg_tables where schemaname = 'information_schema'

一般に、pg* テーブルを使用すると、パーミッションに制約されることなく、データベース内のすべてを表示できます (もちろん、テーブルにアクセスできる場合)。

于 2013-05-16T07:09:23.493 に答える
1

手早く汚いワンライナー クエリが必要な場合は、次のようにします。

select * from information_schema.tables

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

(他の投稿では、より具体的な情報スキーマクエリを提案していますが、初心者として、このワンライナークエリがテーブルを理解するのに役立つことがわかりました)

于 2018-02-07T11:46:56.247 に答える