Quand je fais un \dt
psql, je ne reçois qu'une liste des tables dans le schéma actuel ( public
par défaut).
Comment obtenir une liste de toutes les tables dans tous les schémas ou un schéma particulier?
la source
Quand je fais un \dt
psql, je ne reçois qu'une liste des tables dans le schéma actuel ( public
par défaut).
Comment obtenir une liste de toutes les tables dans tous les schémas ou un schéma particulier?
Dans tous les schémas:
=> \dt *.*
Dans un schéma particulier:
=> \dt public.*
Il est possible d'utiliser des expressions régulières avec certaines restrictions
\dt (public|s).(s|t)
List of relations
Schema | Name | Type | Owner
--------+------+-------+-------
public | s | table | cpn
public | t | table | cpn
s | t | table | cpn
Les utilisateurs avancés peuvent utiliser des notations d'expressions régulières telles que des classes de caractères, par exemple [0-9] pour faire correspondre n'importe quel chiffre. Tous les caractères spéciaux d'expression régulière fonctionnent comme spécifié dans la section 9.7.3, à l'exception de celui
.
qui est pris comme séparateur comme mentionné ci-dessus,*
qui est traduit en notation d'expression régulière.*
,?
qui est traduit en.
, et$
qui correspond littéralement. Vous pouvez émuler ces caractères de modèle au besoin en écrivant?
pour.
,(R+|)
pourR*
ou(R|)
pour est automatiquement ajouté à votre modèle). ÉcrireR?
.$
n'est pas nécessaire en tant que caractère d'expression régulière car le modèle doit correspondre au nom entier, contrairement à l'interprétation habituelle des expressions régulières (en d'autres termes,$
*
au début et / ou à la fin si vous ne souhaitez pas que le motif soit ancré. Notez que dans les guillemets doubles, tous les caractères spéciaux d'expression régulière perdent leur signification spéciale et sont mis en correspondance littéralement. En outre, les caractères spéciaux d'expression régulière sont mis en correspondance littéralement dans les modèles de nom d'opérateur (c'est-à-dire l'argument de\do
).
\dt
Est tout simplement équivalent à\dt public.*
, ai-je raison?\dt public.user_info, public.user_scope
?\dt public.a; \dt public.b;
sur une seule ligne.search_path
, et qui est par défaut"$user", public.*
. Par conséquent,set search_path=s; \dt
va répertorier toutes les tables du schémas
.Vous pouvez sélectionner les tableaux à partir de
information_schema
la source
Alternativement,
information_schema
il est possible d'utiliserpg_tables
:la source
SELECT tablename FROM pg_tables WHERE schemaname = 'public';
information_schema
non-liste des éléments dupublic
schéma, mais lapg_tables
méthode a bien fonctionné. Merci beaucoup!Pour ceux qui rencontreront cela à l'avenir:
Si vous souhaitez voir une liste de relations pour plusieurs schémas:
la source