Wenn ich eine \dt
in psql mache, bekomme ich nur eine Liste der Tabellen im aktuellen Schema ( public
standardmäßig).
Wie kann ich eine Liste aller Tabellen in allen Schemas oder einem bestimmten Schema erhalten?
quelle
Wenn ich eine \dt
in psql mache, bekomme ich nur eine Liste der Tabellen im aktuellen Schema ( public
standardmäßig).
Wie kann ich eine Liste aller Tabellen in allen Schemas oder einem bestimmten Schema erhalten?
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 Notationen mit regulären Ausdrücken wie Zeichenklassen verwenden, z. B. [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 der Ausnahme, dass
.
sie wie oben erwähnt als Trennzeichen verwendet werden,*
das in die Notation für reguläre Ausdrücke übersetzt wird.*
, in?
die übersetzt.
wird und$
die buchstäblich übereinstimmt. Sie können diese Musterzeichen bei Bedarf emulieren, indem Sie?
für.
,(R+|)
fürR*
oder(R|)
für schreibenR?
.$
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 anderen Worten:$
wird automatisch an Ihr Muster angehängt). Schreiben Sie*
am Anfang und / oder Ende, wenn Sie nicht möchten, dass das Muster verankert wird. Beachten Sie, dass in doppelten Anführungszeichen alle Sonderzeichen mit regulären Ausdrücken ihre Sonderbedeutung verlieren und buchstäblich übereinstimmen. Außerdem werden die Sonderzeichen für reguläre Ausdrücke in Operator-Namensmustern (dh dem Argument von\do
) buchstäblich abgeglichen .
\dt
Ist einfach gleichbedeutend mit\dt public.*
, habe ich recht?\dt public.user_info, public.user_scope
?\dt public.a; \dt public.b;
einer Zeile zu arbeiten.search_path
, und dass die Standardwerte"$user", public.*
. Folglich werdenset search_path=s; \dt
alle Tabellen im Schema aufgelistets
.Sie können die Tabellen aus auswählen
information_schema
quelle
Alternativ dazu
information_schema
ist möglichpg_tables
:quelle
SELECT tablename FROM pg_tables WHERE schemaname = 'public';
information_schema
keine Elemente aus dempublic
Schema aufgelistet wurden, aber diepg_tables
Methode hat gut funktioniert. Danke vielmals!Für diejenigen, die in Zukunft darauf stoßen:
Wenn Sie eine Liste der Beziehungen für mehrere Schemata anzeigen möchten:
quelle