PostgreSQLのinformation_schema内のすべてのテーブルを一覧表示するための最良の方法は何ですか?
明確にするために:私は空のDBを使用しています(自分のテーブルを追加していません)が、information_schema構造内のすべてのテーブルを表示したいと思います。
PostgreSQLのinformation_schema内のすべてのテーブルを一覧表示するための最良の方法は何ですか?
明確にするために:私は空のDBを使用しています(自分のテーブルを追加していません)が、information_schema構造内のすべてのテーブルを表示したいと思います。
select * from information_schema.tables
特定のデータベースの Postgres によって管理されているすべてのテーブルのリストを取得するために実行できるはずです。
を追加しwhere table_schema = 'information_schema'
て、情報スキーマのテーブルだけを表示することもできます。
テーブルを一覧表示するには、次を使用します。
SELECT table_name FROM information_schema.tables WHERE table_schema='public'
作成したテーブルのみが一覧表示されます。
\dt information_schema.
psql内から、問題ないはずです。
" \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)
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'
あなたも使うかもしれません
select * from pg_tables where schemaname = 'information_schema'
一般に、pg* テーブルを使用すると、パーミッションに制約されることなく、データベース内のすべてを表示できます (もちろん、テーブルにアクセスできる場合)。
手早く汚いワンライナー クエリが必要な場合は、次のようにします。
select * from information_schema.tables
psql を開かなくても、クエリ ツールで直接実行できます。
(他の投稿では、より具体的な情報スキーマクエリを提案していますが、初心者として、このワンライナークエリがテーブルを理解するのに役立つことがわかりました)