web-dev-qa-db-fra.com

Requête PostgreSQL pour lister tous les noms de table?

Existe-t-il une requête permettant de répertorier toutes les tables de ma base de données Postgres?.

J'ai essayé une requête comme:

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

Mais cette requête renvoie également des vues.

Comment puis-je obtenir uniquement les noms de table, pas les vues?

153
jobi88

Qu'est-ce que cette requête (basée sur la description de manuel )?

SELECT table_name
  FROM information_schema.tables
 WHERE table_schema='public'
   AND table_type='BASE TABLE';
259
vyegorov

Si vous voulez une liste de base de données

SELECT datname FROM pg_database WHERE datistemplate = false;

Si vous voulez une liste des tables de l'installation actuelle de toutes les bases de données

SELECT table_schema,table_name FROM information_schema.tables
ORDER BY table_schema,table_name;
34
Harsh

Ouvrez le terminal postgres avec la base de données que vous souhaitez:

psql dbname (run this line in a terminal)

ensuite, lancez cette commande dans l'environnement postgres

\d

Cela décrira toutes les tables par leur nom. Fondamentalement une liste de tables par nom croissant.

Ensuite, vous pouvez essayer ceci pour décrire une table par champs:

\d tablename.

J'espère que cela t'aides.

26
Ty93
select 
 relname as table 
from 
 pg_stat_user_tables 
where schemaname = 'public'

select 
  tablename as table 
from 
  pg_tables  
where schemaname = 'public'
6
Vivek S.

Que diriez-vous de donner simplement \dt dans psql? Voir https://www.postgresql.org/docs/current/static/app-psql.html .

6
Baris Demiray

Essaye ça:

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

celui-ci fonctionne!

2
T.S.