psql optimal nutzen: Ein essenzieller Leitfaden zu PostgreSQL-Meta-Befehlen
Lernen Sie die psql-Meta-Befehle kennen, die Ihnen helfen, Schemas zu inspizieren, die Ausgabe zu formatieren, Datenbanken zu wechseln und schneller im Terminal zu arbeiten.
psql aufrüsten: Ein unverzichtbarer Leitfaden für PostgreSQL-Meta-Befehle
Wenn Sie mit PostgreSQL über ein Terminal arbeiten, ersparen Ihnen psql-Meta-Befehle das Schreiben von Katalogabfragen für alltägliche Überprüfungen. Diese Backslash-Befehle helfen Ihnen, Tabellen aufzulisten, Objekte zu beschreiben, Datenbanken zu wechseln, die Ausgabe zu formatieren und Hilfe zu erhalten, ohne Ihre Sitzung zu verlassen.
Dieser Leitfaden behandelt die psql-Befehle, die Sie am häufigsten verwenden werden, und zeigt, wo sie in der realen Datenbankarbeit eingesetzt werden.
Grundlegendes zu psql-Meta-Befehlen
Meta-Befehle in psql sind Direktiven, die von psql selbst verarbeitet werden, anstatt zur Ausführung an den PostgreSQL-Server gesendet zu werden. Sie sind leicht an ihrem führenden Backslash (\) zu erkennen. Diese Unterscheidung ist entscheidend, da Meta-Befehle ihre eigene Syntax und ihr eigenes Verhalten haben, getrennt von standardmäßigem SQL.
Während Sie beispielsweise SELECT * FROM information_schema.tables; schreiben könnten, um alle Tabellen aufzulisten, kann ein psql-Meta-Befehl dasselbe Ergebnis mit einem einfachen \dt erzielen.
Unverzichtbare Meta-Befehle für die Datenbankinspektion
Die Inspektion Ihrer Datenbankstruktur ist eine häufige Aufgabe. psql bietet mehrere Meta-Befehle, um diesen Prozess mühelos zu gestalten.
Tabellen auflisten (\dt)
Der Befehl \dt ist einer der am häufigsten verwendeten Meta-Befehle. Er listet alle Tabellen in der aktuellen Datenbank zusammen mit ihrem Schema und Besitzer auf.
Beispiel:
\dtAusgabe:
Liste der Relationen Schema | Name | Typ | Besitzer --------+------------+-------+---------- public | accounts | Tabelle | postgres public | products | Tabelle | postgres sales | orders | Tabelle | dbadmin (3 Zeilen)Varianten:
\dt+: Liefert detailliertere Informationen, einschließlich Tabellengröße und Beschreibung.\dt schema.*: Listet nur Tabellen in einem bestimmten Schema auf.
Tabellen und Spalten beschreiben (\d)
Der Befehl \d ist unverzichtbar, um die Struktur einer bestimmten Tabelle zu verstehen, einschließlich ihrer Spalten, Datentypen, Einschränkungen und Indizes.
Beispiel: Um die Tabelle
productszu beschreiben:\d productsAusgabe:
Tabelle "public.products" Spalte | Typ | Sortierung | NULL erlaubt | Standard ----------+-----------------------+-----------+--------------+--------- product_id | integer | | not null | name | character varying(100)| | | price | numeric(10, 2) | | | Indizes: "products_pkey" PRIMARY KEY, btree (product_id)Varianten:
\d+ tabellenname: Liefert noch detailliertere Informationen, einschließlich Speicherparametern und Kommentaren.\dn: Listet alle Schemas auf.\df: Listet alle Funktionen auf.\dv: Listet alle Views auf.
Views inspizieren (\dv)
Ähnlich wie bei Tabellen können Sie Views auflisten und beschreiben.
Beispiel (Views auflisten):
\dvBeispiel (Einen View beschreiben):
\dv my_view
Schemas auflisten (\dn)
Um alle in Ihrer Datenbank vorhandenen Schemas zu sehen, verwenden Sie den Befehl \dn.
- Beispiel:
\dn
Meta-Befehle für Abfrageverwaltung und Ausgabesteuerung
psql bietet leistungsstarke Optionen zur Steuerung der Darstellung von Abfrageergebnissen und zur Verwaltung Ihres Abfrageverlaufs.
Abfragezeitmessung (\timing)
Der Befehl \timing schaltet die Anzeige der verstrichenen Zeit für jede SQL-Abfrage um. Er ist nützlich für schnelle Vergleiche beim Optimieren einer Abfrage, obwohl Sie EXPLAIN (ANALYZE, BUFFERS) verwenden sollten, wenn Sie einen echten Ausführungsplan benötigen.
Beispiel (Zeitmessung einschalten):
\timing onJetzt wird jeder von Ihnen ausgeführten Abfrage ihre Ausführungszeit folgen.
Beispiel (Zeitmessung ausschalten):
\timing off
Ausgabeformatierung (\a, \H, \t)
\a: Schaltet zwischen ausgerichteter (tabellenartiger) und nicht ausgerichteter (CSV-ähnlicher) Ausgabe um. Nicht ausgerichtete Ausgabe ist oft einfacher programmatisch zu parsen.\a SELECT * FROM products;\H: Wechselt das Ausgabeformat zu HTML.\H SELECT * FROM products;\t: Schaltet die Anzeige von Spaltenüberschriften und Zeilenanzahl-Fußzeilen um. Dies ist nützlich, wenn Sie eine Ausgabe wünschen, die sich leichter in einen anderen Befehl weiterleiten lässt.\t SELECT name, price FROM products;
Seitenweise Anzeige (\pset pager)
Wenn Ihre Abfrageergebnisse lang sind, verwendet psql möglicherweise einen Pager wie less, abhängig von Ihrer Umgebung und den Pagereinstellungen. Steuern Sie dieses Verhalten mit \pset pager.
Beispiel (Pager für lange Ausgabe verwenden):
\pset pager onBeispiel (Pager deaktivieren):
\pset pager off
Administrative Meta-Befehle
Über die Inspektion und Ausgabesteuerung hinaus bietet psql Befehle für allgemeine administrative Aufgaben.
Datenbanken auflisten (\l)
Um alle verfügbaren Datenbanken auf dem verbundenen PostgreSQL-Server zu sehen, verwenden Sie \l.
- Beispiel:
\l
Mit einer anderen Datenbank verbinden (\c)
Wenn Sie bereits mit einer psql-Sitzung verbunden sind und zu einer anderen Datenbank wechseln möchten, verwenden Sie den Befehl \c.
- Beispiel: Um eine Verbindung zur Datenbank
mydatabaseherzustellen:\c mydatabase
\? für Hilfe ausführen
Im Zweifelsfall bietet psql ein eigenes Hilfesystem. Der Befehl \? listet alle verfügbaren Meta-Befehle auf, und \! ermöglicht es Ihnen, Shell-Befehle auszuführen.
Beispiel (Alle Meta-Befehle auflisten):
\?Beispiel (Einen Shell-Befehl ausführen, z.B.
ls):\! ls -l
Best Practices und Tipps
- Verwenden Sie Shell-Aliasnamen für vollständige
psql-Befehle: Shell-Aliasnamen können\dtnicht innerhalb einer bereits geöffnetenpsql-Sitzung ausführen, aber sie können häufige Startbefehle verkürzen. Zum Beispielalias pprod='psql "postgresql://[email protected]/prod"'. - Kombinieren Sie mit SQL: Meta-Befehle schließen sich nicht gegenseitig mit SQL aus. Sie können sie verwenden, um schnell ein Schema zu inspizieren, bevor Sie eine
SELECT-Anweisung schreiben, oder\timingverwenden, um Abfrage-Laufzeiten zu vergleichen. - Verstehen Sie den Gültigkeitsbereich: Denken Sie daran, dass Meta-Befehle im Kontext Ihrer aktuellen
psql-Sitzung und -Verbindung arbeiten. Befehle wie\cändern die aktive Datenbank für diese Sitzung. - Verwenden Sie
\?großzügig: Die integrierte Hilfe ist umfassend und eine ausgezeichnete Ressource, wenn Sie sich an einen Befehl erinnern oder neue entdecken müssen.
Fazit
Beginnen Sie mit \dt, \d, \dn, \l, \c, \timing, \pset pager und \?. Diese wenigen Befehle decken die meisten täglichen Inspektionsarbeiten ab und lassen psql viel weniger wie eine rohe SQL-Eingabeaufforderung wirken.