Liste des tables dans un schéma PostgreSQL
Quand je fais un dt
dans psql, Je n'obtiens qu'une liste de tables dans le schéma actuel (public
par défaut).
Comment puis-je obtenir une liste de toutes les tables dans tous les schémas, ou un schéma?
4 réponses
Dans tous les schémas:
=> \dt *.*
Dans un schéma particulier:
=> \dt public.*
Il est possible d'utiliser des expressions régulières avec quelques 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 des classes de caractères, par exemple [0-9] pour 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, sauf pour . qui est pris comme séparateur comme mentionné ci-dessus, * qui est traduit en expression régulière notation ., ? ce qui est traduit ., et $ qui correspond littéralement. Vous pouvez émuler ces caractères de modèle 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 puisque le motif doit correspondre au nom entier, contrairement à l'interprétation habituelle des expressions régulières (en d'autres termes, $ est automatiquement ajouté à votre motif). Écrivez * au début et / ou à la fin si vous ne souhaitez pas que le motif soit ancré. Notons qu'au sein de guillemets doubles, tous les caractères spéciaux d'expression régulière perdent leurs significations spéciales et sont appariés littéralement. En outre, les caractères spéciaux de l'expression régulière correspondent littéralement dans les modèles de nom d'opérateur (c'est-à-dire l'argument de \do).
Vous pouvez sélectionner les tables à partir de information_schema
SELECT * FROM information_schema.tables
WHERE table_schema = 'public'
, Subsidiairement, à information_schema
, il est possible d'utiliser pg_tables
:
select * from pg_tables where schemaname='public';
Pour ceux qui viendront à travers cela dans le futur:
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