Liste Toutes les tables dans le schéma d'informations postgresql

Quelle est la meilleure façon de lister toutes les tables dans information_schema de PostgreSQL?

Pour clarifier: je travaille avec une base de données vide (je n'ai ajouté aucune de mes propres tables), mais je veux voir chaque table dans la structure information_schema.

127
demandé sur Brian Tompsett - 汤莱恩 2010-02-17 00:53:39

7 réponses

Vous devriez pouvoir simplement exécuter select * from information_schema.tables pour obtenir une liste de chaque table gérée par Postgres pour une base de données particulière.

Vous pouvez également ajouter un where table_schema = 'information_schema' pour voir uniquement les tables dans le schéma d'informations.

181
répondu RodeoClown 2010-02-16 22:08:06

Pour lister vos tables, utilisez:

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

Il ne Liste que les tables que vous créez.

70
répondu phsaires 2012-11-25 19:21:36
\dt information_schema.

Depuis psql, ça devrait aller.

31
répondu 2010-02-16 22:31:15

La commande "\z" {[3] } est également un bon moyen de lister les tables à l'intérieur de la session psql interactive.

Par exemple.

# 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)
8
répondu Chris Shoesmith 2014-07-07 06:25:27

Vous pouvez également utiliser

select * from pg_tables where schemaname = 'information_schema'

En général, les tables pg* vous permettent de tout voir dans la base de données, sans contrainte à vos autorisations (si vous avez accès aux tables bien sûr).

7
répondu Tim 2015-07-28 16:36:40

Pour le schéma privé 'xxx' dans postgresql:

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

Sans table_type = 'BASE TABLE', vous listerez les tables et Vues

4
répondu germanlinux 2017-04-03 20:20:33

Si vous voulez une requête simple et sale:

select * from information_schema.tables

Vous pouvez l'exécuter directement dans l'outil de Requête sans avoir à ouvrir psql.

(D'autres messages suggèrent de belles requêtes information_schema plus spécifiques mais en tant que newby, je trouve que cette requête one-liner m'aide à comprendre la table)

0
répondu Sally Levesque 2018-02-07 11:46:56