Kennisbank › Postgresql › psql: PostgreSQL
postgresql starter 08 September 2026

psql: PostgreSQL

U opent een terminal, typt `psql`, en staat opeens tegenover een prompt die eruitziet als `postgres=#`. Geen knoppen, geen menu’s, geen muis. Alleen een

U opent een terminal, typt `psql`, en staat plots tegenover een prompt die eruitziet als `postgres=#`. Geen knoppen, geen menu’s, geen muis. Alleen een cursor die wacht op SQL.

Voor wie dagelijks met PostgreSQL werkt, is dat geen beperking. Het is de snelste weg van gedachte naar query, en terug. psql is de standaard terminal-client die met elke PostgreSQL-installatie meekomt, op Linux, macOS en Windows. Het is geen grafische tool en probeert dat ook niet te zijn.

Wat psql bijzonder maakt, is de combinatie van twee talen. U typt gewone SQL, maar daarnaast heeft psql eigen meta-commands die met een backslash beginnen. `\l` toont alle databases, `\dt` alle tabellen in het huidige schema, `\d` details over één tabel of view. Geen systeemtabellen raadplegen, geen joins op `pg_catalog`. Gewoon een backslash, één letter, Enter.

Die meta-commands zijn geen SQL. psql vangt ze af voordat ze de database bereiken en vertaalt ze intern naar de queries die u anders zelf had moeten schrijven. Het bespaart typwerk, maar het belangrijkste is dat u niet voortdurend uit uw SQL-gedachte moet stappen om te onthouden hoe die ene systeemquery ook alweer in elkaar zat.

De geschiedenis werkt zoals u van een fatsoenlijke command-line tool mag verwachten. Elke query die u invoert, wordt automatisch opgeslagen, en bij de volgende sessie bladert u er met de pijltjestoetsen doorheen. Op Unix-achtige systemen staat die historie in `~/.psql_history`, op Windows in `%APPDATA%\postgresql\psql_history`.

Wilt u de historie niet op de standaardplek, dan kunt u die verplaatsen met de omgevingsvariabele `PSQL_HISTORY`. Zet hem in uw `.bashrc` of `.zshrc` en elke sessie schrijft naar het door u gekozen bestand. Er is ook een interne variabele `HISTFILE`, die u per sessie kunt instellen. Handig als u op één machine aan meerdere projecten werkt en de queries gescheiden wilt houden. Of als u niet wilt dat een collega die `DROP TABLE` van gisteravond terugvindt in uw historie.

Voor wie psql vooral in scripts gebruikt, zijn de bestandscommando’s belangrijker. Met `\i bestand.sql` leest u een SQL-bestand in, en met `-f bestand.sql` op de commandoregel doet u hetzelfde zonder interactieve sessie. De uitvoer van een query vangt u met `\o uitvoer.txt` weg naar een bestand. Daarmee wordt psql bruikbaar in cron-taken en CI/CD-pijplijnen, precies waar een grafische client niets te zoeken heeft.

De verbinding zelf regelt psql via dezelfde mechanismen als elke andere PostgreSQL-client. SSL-versleuteling, authenticatie via `.pgpass` of ident, verbinding over Unix-sockets of TCP/IP — het zit er allemaal in. U kunt vanaf een ontwikkelwerkstation een productiedatabase op een andere server benaderen, of via SSH op een server draaien zonder dat er ooit een grafische omgeving aan te pas komt.

Back-ups maken doet psql niet. Daarvoor hebt u `pg_dump` en `pg_dumpall`. Maar een back-up in plain SQL-formaat terugzetten doet u weer wél met psql: `psql -d databasenaam -f backup.sql`. Het programma is daarmee het uitvoeringskanaal voor herstel, ook al heeft het de back-up zelf nooit gemaakt.

De PostgreSQL Global Development Group omschrijft psql in de officiële documentatie als een terminal-based front-end to PostgreSQL. Die formulering is sinds versie 7.0 ongewijzigd, en dat is veelzeggend. Het programma is niet meegegroeid met de mode van grafische interfaces of web-based dashboards. Het is blijven doen wat het altijd deed: een tekstuele interface bieden naar een relationele database, zonder franje.

Dat betekent ook dat u er iets voor moet leren. De meta-commands zijn niet ontdekkbaar vanuit de interface zelf; u moet ze kennen of opzoeken. Wie gewend is aan een klikbare database-client zal de eerste dagen regelmatig `\?` intoetsen om de lijst met beschikbare commands te zien. Die lijst is lang, en dat is eerlijk gezegd ook de zwakte van psql: de drempel ligt niet bij SQL, maar bij het onthouden van al die backslash-combinaties.

Daar staat tegenover dat u niets extra’s hoeft te installeren. Elke PostgreSQL-installatie levert psql mee, op elk ondersteund platform. Geen aparte package, geen plugin, geen versie die niet matcht met de server. Het is er gewoon, en het werkt met de versie van PostgreSQL die u draait.

Voor wie regelmatig met PostgreSQL werkt, is psql daarmee niet één tool naast andere. Het is de tool waar u naar terugvalt als de grafische client te traag is, te beperkt, of gewoon niet beschikbaar op de server waar u moet zijn. Het is de gemeenschappelijke deler tussen een laptop, een productieserver en een container die draait in een omgeving waar niets grafisch bestaat.

De vraag is niet of psql beter is dan een grafische client. De vraag is waar u werkt en wat u doet. Wie af en toe een query draait op een lokale database heeft aan een grafische tool genoeg. Wie servers beheert, migraties draait of backups terugzet, komt vroeg of laat in een terminal terecht. En dan blijkt die ene backslash plots sneller dan welke muis ook.

← Terug naar kennisbank
← Terug naar kennisbank