Quand je fais un \dt
dans psql, je ne reçois qu'une liste de tables dans le schéma actuel (public
par défaut).
Comment obtenir une liste de toutes les tables de tous les schémas ou d'un schéma particulier?
Dans tous les schémas:
=> \dt *.*
Dans un schéma particulier:
=> \dt public.*
Il est possible d'utiliser 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'expression régulière telles que les classes de caractères, par exemple [0-9] pour faire correspondre tout 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. 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 motif au besoin en écrivant? pour., (R + |) pour R ou (R |) pour R ?. $ n'est pas nécessaire en tant que caractère d'expression régulière car le modèle doit correspondre au nom complet, contrairement à l'interprétation habituelle des expressions régulières (en d'autres termes, $ est automatiquement ajouté à votre modèle). Écrivez * au début et/ou à la fin si vous ne souhaitez pas ancrer le motif. Notez que dans les guillemets doubles, tous les caractères spéciaux d’expression régulière perdent leur signification spéciale et sont appariés littéralement. De plus, les caractères spéciaux des expressions régulières sont appariés littéralement dans les modèles de nom d’opérateur (c’est-à-dire l’argument de\do).
Vous pouvez sélectionner les tables de information_schema
SELECT * FROM information_schema.tables
WHERE table_schema = 'public'
Alternativement à information_schema
, il est possible d'utiliser pg_tables
:
select * from pg_tables where schemaname='public';
Pour ceux qui rencontreront cela à l'avenir:
Si vous souhaitez voir une liste de relations pour plusieurs schémas:
$psql mydatabase
mydatabase=# SET search_path TO public, usa; #schema examples
SET
mydatabase=# \dt
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | counties | table | postgres
public | spatial_ref_sys | table | postgres
public | states | table | postgres
public | us_cities | table | postgres
usa | census2010 | table | postgres