it-swarm.com.de

Listen Sie Tabellen in einem PostgreSQL-Schema auf

Wenn ich in psql einen \dt mache, erhalte ich nur eine Auflistung der Tabellen im aktuellen Schema (public standardmäßig).

Wie kann ich eine Liste aller Tabellen in allen Schemas oder in einem bestimmten Schema erhalten?

285
Nyxynyx

In allen Schemata:

=> \dt *.*

In einem bestimmten Schema:

=> \dt public.*

Es ist möglich, reguläre Ausdrücke mit einigen Einschränkungen zu verwenden

\dt (public|s).(s|t)
       List of relations
 Schema | Name | Type  | Owner 
--------+------+-------+-------
 public | s    | table | cpn
 public | t    | table | cpn
 s      | t    | table | cpn

Fortgeschrittene Benutzer können reguläre Ausdrücke wie Zeichenklassen verwenden, zum Beispiel [0-9], um mit einer beliebigen Ziffer übereinzustimmen. Alle Sonderzeichen für reguläre Ausdrücke funktionieren wie in Abschnitt 9.7.3 angegeben, mit Ausnahme von. das wie oben erwähnt als Trennzeichen verwendet wird, * das in die Notation für reguläre Ausdrücke übersetzt wird ,? die übersetzt wird, und $, die wörtlich abgeglichen wird. Sie können diese Musterzeichen bei Bedarf durch Schreiben emulieren? für., (R + |) für R oder (R |) für R ?. $ wird nicht als Zeichen für reguläre Ausdrücke benötigt, da das Muster im Gegensatz zur üblichen Interpretation regulärer Ausdrücke mit dem gesamten Namen übereinstimmen muss (mit anderen Worten, $ wird automatisch an Ihr Muster angehängt). Schreiben Sie * am Anfang und/oder Ende, wenn das Muster nicht verankert werden soll. Beachten Sie, dass in Anführungszeichen alle Sonderzeichen für reguläre Ausdrücke ihre spezielle Bedeutung verlieren und buchstäblich übereinstimmen. Auch die Sonderzeichen für reguläre Ausdrücke werden in Operator-Namensmustern (d. H. Dem Argument von\do) wörtlich verglichen.

433
Clodoaldo Neto

Sie können die Tabellen aus information_schema auswählen.

SELECT * FROM information_schema.tables 
WHERE table_schema = 'public'
219
Jakub Kania

Alternativ zu information_schema kann pg_tables verwendet werden:

select * from pg_tables where schemaname='public';
44

Für diejenigen, die in Zukunft darauf stoßen:

Wenn Sie eine Liste der Beziehungen für mehrere Schemata anzeigen möchten:

$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
7
Blee