web-dev-qa-db-fra.com

Lister toutes les tables dans postgresql information_schema

Quel est le meilleur moyen 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 souhaite voir toutes les tables de la structure information_schema.

157
littleK

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

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

220
RodeoClown

Pour lister vos tables, utilisez:

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

Il ne listera que les tables que vous avez créées.

87
phsaires
\dt information_schema.

de psql, ça devrait aller.

37
user80168

Le "\ z" COMMAND est également un bon moyen de lister les tables dans la session interactive psql.

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)
13
Chris Shoesmith

Vous pouvez aussi utiliser

select * from pg_tables where schemaname = 'information_schema'

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

8
Timofey

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

7
germanlinux

1.Obtenez toutes les tables et vues de information_schema.tables, y compris celles de information_schema et pg_catalog.

select * from information_schema.tables

Les tables 2.get et les vues appartiennent à certains schémas

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

3.get tables seulement (presque\dt)

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

Si vous voulez une requête one-liner rapide 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 articles suggèrent de Nice des requêtes plus spécifiques sur information_schema mais, comme nouveau, je découvre que cette requête à réponse unique m'aide à comprendre le tableau)

1
Sally Levesque