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.