web-dev-qa-db-fra.com

Afficher les tables dans PostgreSQL

Quel est l'équivalent de show tables (de MySQL) dans PostgreSQL?

1394
flybywire

Depuis l'interface de ligne de commande psql, toutes les tables du schéma actuel sont affichées:

\dt

Par programme (ou à partir de l'interface psql également, bien sûr):

SELECT * FROM pg_catalog.pg_tables;

Les tables système résident dans la base de données pg_catalog.

2064
Mihai Limbășan

Connectez-vous en tant que superutilisateur:

Sudo -u postgres psql

Vous pouvez répertorier toutes les bases de données et tous les utilisateurs avec la commande \l (répertoriez les autres commandes avec \?).

Maintenant, si vous voulez voir d'autres bases de données, vous pouvez changer d'utilisateur/base de données avec la commande \c comme \c template1, \c postgres postgres et utiliser \d, \dt ou \dS pour voir les tables/vues/etc.

152
JLarky

(Pour être complet)

Vous pouvez également interroger le schéma (standard SQL) information :

SELECT
    table_schema || '.' || table_name
FROM
    information_schema.tables
WHERE
    table_type = 'BASE TABLE'
AND
    table_schema NOT IN ('pg_catalog', 'information_schema');
101
Milen A. Radev
  1. Première connexion en tant qu'utilisateur postgres:

    Sudo su - postgres

  2. se connecter à la base de données requise: psql -d databaseName

  3. \dt renverrait la liste de toutes les tables de la base de données à laquelle vous êtes connecté.

48
nish

Vous pouvez utiliser le terminal interactif Psql de PostgreSQL pour afficher les tables dans PostgreSQL. 

1. Démarrer Psql

Habituellement, vous pouvez exécuter la commande suivante pour entrer dans psql:

psql DBNAME USERNAME

Par exemple, psql template1 postgres

Une situation que vous pourriez avoir est la suivante: supposons que vous vous connectiez en tant que root et que vous ne vous souveniez pas du nom de la base de données. Vous pouvez simplement entrer en premier dans Psql en lançant:

Sudo -u postgres psql

Dans certains systèmes, la commande Sudo n'est pas disponible. Vous pouvez également exécuter l'une des commandes ci-dessous:

psql -U postgres
psql --username=postgres

2. Tables de spectacle

Maintenant, dans Psql, vous pouvez exécuter des commandes telles que:

  1. \? liste toutes les commandes
  2. \l liste des bases de données
  3. \conninfo afficher des informations sur la connexion en cours
  4. \c [DBNAME] se connecter à la nouvelle base de données, par exemple, \c template1
  5. \dt tables de liste
  6. Ensuite, vous pouvez exécuter des instructions SQL, par exemple SELECT * FROM my_table; (Remarque: une instruction doit être terminée par un point-virgule ;)
  7. \q quitter psql
36
Yuci

L'exécution de psql avec l'indicateur -E fera écho à la requête utilisée en interne pour implémenter \Dt et similaire:

Sudo -u postgres psql -E

postgres=# \dt       
********* QUERY **********
SELECT n.nspname as "Schema",
c.relname as "Name", 
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
    AND n.nspname <> 'pg_catalog'
    AND n.nspname <> 'information_schema'
    AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;        
**************************
34
bsb

Si vous voulez seulement voir la liste des tables que vous avez créées, vous pouvez simplement dire:

\dt

Mais nous avons aussi PATTERN qui vous aidera à personnaliser les tables à afficher. Pour tout afficher, y compris le schéma pg_catalog, vous pouvez ajouter *.

\dt *

Si vous le faites: \?

\ dt [S +] [PATTERN] tables de liste

23
Banned_User

Connectez-vous d'abord avec la base de données en utilisant la commande suivante 

\c database_name

Et vous verrez ce message - You are now connected to database database_name. Et les exécutent la commande suivante 

SELECT * FROM table_name;

Dans nom_base_données et nom_table, mettez simplement à jour votre nom de base et de

20
J4cK

utiliser seulement voir une table 

=> \dt

si vous voulez voir les tables de schéma

=>\dt+

si vous voulez voir des tables de schéma spécifiques

=>\dt schema_name.* 
17
Aryan

Connectez-vous en tant que superutilisateur pour pouvoir vérifier toutes les bases de données et leurs schémas: -

Sudo su - postgres

Ensuite, nous pouvons arriver à Shell postgresql en utilisant la commande suivante: -

psql

Vous pouvez maintenant vérifier la liste de toutes les bases de données en utilisant la commande suivante: -

\l

Si vous souhaitez également vérifier la taille des bases de données, utilisez: -

\l+

Une fois que vous avez trouvé votre base de données maintenant, vous pouvez vous connecter à cette base de données en utilisant la commande suivante: -

\c database_name

Une fois connecté, vous pouvez vérifier les tables de la base de données ou le schéma en: -

\d

Maintenant, pour revenir à l'utilisation de Shell: -

q

Maintenant, pour voir plus loin les détails d'une certaine utilisation de la table: -

\d table_name
14

Si vous utilisez pgAdmin4 dans PostgreSQL, vous pouvez utiliser ceci pour afficher les tables dans votre base de données:

select * from information_schema.tables where table_schema='public';
14
Reynante Daitol

Notez que \dt seul listera les tables dans le schéma public de la base de données que vous utilisez. J'aime garder mes tables dans des schémas séparés, donc la réponse acceptée ne fonctionne pas pour moi.

Pour lister toutes les tables dans un schéma spécifique, je devais:

1) Connectez-vous à la base de données souhaitée:

psql mydb

2) Spécifiez le nom du schéma pour lequel je souhaite voir les tables après la commande \dt, comme ceci:

\dt myschema.*

Cela me montre les résultats qui m'intéressent:

               List of relations
 Schema   |       Name      | Type  |  Owner   
----------+-----------------+-------+----------
 myschema | users           | table | postgres
 myschema | activity        | table | postgres
 myschema | roles           | table | postgres
13
rotarydial

\ dt (no * required) - listera toutes les tables d'une base de données existante à laquelle vous êtes déjà connecté. Également utile de noter:

\ d [nom_table] - affiche toutes les colonnes d'une table donnée, y compris les informations de type, les références et les contraintes de clé.

7
user4642897

Vous pouvez répertorier les tables de la base de données actuelle avec \dt.

Fwiw, \d tablename affichera des détails sur la table donnée, quelque chose comme show columns from tablename dans MySQL, mais avec un peu plus d’informations.

5
JohnK
select * from pg_catalog.pg_tables
where schemaname != 'information_schema' and schemaname != 'pg_catalog';
5
Abdelhak Ohammou

Utiliser psql :\dt

Ou:

SELECT c.relname AS Tables_in FROM pg_catalog.pg_class c
        LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid)
        AND c.relkind = 'r'
        AND relname NOT LIKE 'pg_%'
ORDER BY 1
4
MisterJoyson

Tout d’abord, vous devez vous connecter avec votre base de données comme

ma base de données est ubuntu

utilisez cette commande pour vous connecter

 \c ubuntu

Ce message montrera 

"Vous êtes maintenant connecté à la base de données" Ubuntu "en tant qu'utilisateur" postgres "."

À présent

Exécutez cette commande pour afficher toutes les tables qu'il contient. 

\d+
3
Usman Yaqoob

\ dt listera les tables et "\ pset pager off" les affichera dans la même fenêtre, sans passer à une autre. Aimez cette fonctionnalité à mort dans dbshell.

1
lauri108

comme oneliner rapide

# just list all the postgres tables sorted in the terminal
db='my_db_name'
clear;psql -d $db -t -c '\dt'|cut -c 11-|Perl -ne 's/^([a-z_0-9]*)( )(.*)/$1/; print'
0
Yordan Georgiev

Pour afficher des tables étrangères dans psql, exécutez \dE

0
Ian Hunter