Comment lister tous les schémas dans PostgreSQL?


148

Sous PostgreSQL v9.1, comment lister tous les schémas utilisant SQL?

Je m'attendais à quelque chose du genre:

SELECT something FROM pg_blah;
156

Pour répertorier tous les schémas, utilisez le standard (ANSI), INFORMATION_SCHEMA.

select schema_name
from information_schema.schemata

Plus de détails dans le manuel: http://www.postgresql.org/docs/current/static/information-schema.html

alternativement:

select nspname
from pg_catalog.pg_namespace;

Plus de détails sur pg_catalog dans le manuel: http://www.postgresql.org/docs/current/static/catalogs.html


165

Lorsque vous utilisez la ligne de commande psql , vous pouvez répertorier tous les schémas à l'aide de la commande \dn .

  0

Merci.Il serait bien que seuls les schémas soient retournés par \ dn, mais dans ce cas, j'écris une application d'amorçage qui se connecte à l'aide de libpq/libpqxx. 15 avril. 132013-04-15 20:03:56

+1

Que sont * les * schémas, que '\ dn' liste, par opposition aux tables que' \ dt' énumère? 29 avril. 162016-04-29 15:29:19

  0

@Tommy '\ dt' répertorie les tables du schéma public.Pour afficher les tables de tous les schémas, utilisez '\ dt *. *' Et pour un schéma particulier, utilisez \ \ dt nom_schéma. * '. 22 nov.. 172017-11-22 06:34:33

  0

@Tommy, les schémas sont des espaces de noms: vous pouvez avoir différentes tables portant le même nom dans différents espaces de noms. 30 nov.. 172017-11-30 08:48:11


25

Connectez-vous à la commande psql -> psql --u {userName} {DBName}, puis vous pourrez saisir la commande ci-dessous pour vérifier le nombre de schémas présents dans la base

DBName=# \dn

Sinon, vous pouvez vérifier la syntaxe en suivant les étapes ci-dessous.

  1. Après avoir connecté le DB, appuyez sur

    DBName=# help
    

Vous obtiendrez les options ci-dessous:

Vous utilisez psql, l'interface de ligne de commande de PostgreSQL.
Type: \ copyright pour conditions de distribution
\ h pour obtenir de l'aide sur les commandes SQL
\?pour obtenir de l'aide avec les commandes psql
\ g ou terminer par un point-virgule pour exécuter la requête
\ q pour quitter

Puis appuyez

DBName=# \?

Vous aurez toutes les options très facilement.


2

Débutant sur postgres 9.3, une astuce que vous pouvez utiliser dans postgres pour obtenir le code SQL exact de la commande d’information (telle que \ d, \ du, \ dp, etc.) dans psql consiste à utiliser une transaction.Voici l’astuce. session postgres, puis tapez votre commande:

begin;
\dn+

Pendant que la transaction est toujours en cours, ouvrez une autre session postgres et interrogez pg_stat_activity pour obtenir le code SQL exact.

postgres=# select query from pg_stat_activity ;
                    query                 
-----------------------------------------------------------------------
    SELECT n.nspname AS "Name",                     +
     pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner",         +
     pg_catalog.array_to_string(n.nspacl, E'\n') AS "Access privileges",+
     pg_catalog.obj_description(n.oid, 'pg_namespace') AS "Description" +
    FROM pg_catalog.pg_namespace n                    +
    WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'   +
    ORDER BY 1;
+6

Vous n'avez pas besoin de le tromper;Il suffit de lancer '\ set ECHO_HIDDEN on' 11 sept.. 162016-09-11 01:22:31

+4

ou exécutez-le en tant que 'psql -E' 22 déc.. 162016-12-22 17:46:28