psql-Befehle — die wichtigsten Optionen und Meta-Kommandos des PostgreSQL-Kommandozeilen-Clients psql. psql ist das interaktive Terminal-Programm für PostgreSQL und kann auch in Scripts für automatisierte Aufgaben eingesetzt werden.
Verbindung herstellen
psql -U benutzer -d dbname -h server
psql -U app -h 192.168.1.20 -p 5433 kunden_db
psql postgresql://benutzer:passwort@server/dbname
Mit -U wird der Benutzer, mit -d die Datenbank und mit -h beziehungsweise -p der Host beziehungsweise Port gewählt. Alternativ akzeptiert psql eine komplette libpq-Verbindungs-URL.
Meta-Kommandos (mit Backslash)
l -- Datenbanken auflisten
dt -- Tabellen im aktuellen Schema anzeigen
d benutzer -- Struktur einer Tabelle beschreiben
dn -- Schemata anzeigen
du -- Rollen anzeigen
c andere_db -- Datenbank wechseln
x -- erweiterte (vertikale) Anzeige umschalten
conninfo -- aktuelle Verbindung anzeigen
Die Meta-Kommandos beginnen mit einem Backslash und steuern die Anzeige, das Schema und die Sitzung — sie sind keine SQL-Anweisungen, sondern Befehle des Client-Programms.
Nicht-interaktiv in Scripts
psql -U app -d kunden_db -c "SELECT count(*) FROM orders;"
psql -U app -d kunden_db -f /pfad/zu/abfrage.sql
psql -U app -d kunden_db -Atc "SELECT id FROM users"
-c führt eine einzelne SQL-Anweisung aus, -f liest Befehle aus einer Datei. Die Kombination -A (unaligned, ohne Auffüllung), -t (nur Datenzeilen) und -q (still) erzeugt saubere Ausgabe für Scripts; -v setzt Variablen.
Fortgeschrittene Meta-Kommandos
copy kunden TO 'export.csv' CSV HEADER
gexec -- Ausgabe der vorigen Query als neue Befehle ausführen
pset format unaligned
o ausgabe.txt -- Ausgabe in Datei umleiten
copy importiert beziehungsweise exportiert Dateien direkt vom Client-Rechner, während COPY auf dem Server läuft. gexec (seit PostgreSQL 9.6) führt das Ergebnis der vorherigen Abfrage als Befehle aus — praktisch für Massen-Operationen wie GRANT-Anweisungen.
Die zugrunde liegende Sprache ist in der SQL-Befehle-Referenz beschrieben, das Datenbanksystem in PostgreSQL. Für MySQL-Systeme übernimmt der mysql-Client die Rolle.