psql PostgreSQL shell
Light · Postcard
102 × 152 mm · PDF
Dark · Postcard
102 × 152 mm · PDF
Ink saver · Postcard
102 × 152 mm · PDF
Light · A4 landscape
297 × 210 mm · PDF
Dark · A4 landscape
297 × 210 mm · PDF
Ink saver · A4 landscape
297 × 210 mm · PDF
Light · A3 landscape
420 × 297 mm · PDF
Dark · A3 landscape
420 × 297 mm · PDF
Ink saver · A3 landscape
420 × 297 mm · PDF
Start here
psql -h <host> -U <user> -d <db>
\l\dt\d <table>
\x auto\timing\copy <table> to '<file>' csv
header
\qConcepts
- Connect flags, URI, env
- Query buffer SQL ending in ;
- Result format with \pset
- Output \o, \g, \copy
Connect
psql -h <host> -p <port> -U <user> -d
<db>
psql
"postgresql://<user>@<host>:<port>/<db>"
psql <db>psql -lpsql -w ...psql "service=<name>"
\c <db> [<user>]
\conninfo\password [<user>]
\qInspect
\l\dt\d <table>
\d+ <table>
\dn\du\dv\di\df <pattern>
\dx\dp <table>
\ds\sf <function>
\sv <view>
\dt <schema>.*
\dSRun SQL
psql -c "<sql>"
psql -f <file.sql>
\i <file>\ir <file>
\e\g\gx\p\r\watch <seconds>
\gexecpsql -1 -f <file.sql>
\ef <function>
\sOutput
\x auto\x\timing\pset null '<text>'
\pset format <fmt>
\pset border <0-3>
\pset linestyle unicode
\pset pager off\tpsql -A -t -c "<sql>"
psql --csv -c "<sql>"
\o <file>\crosstabview\echo <text>
Import & Export
\copy <table> from '<file>' csv
header
\copy <table> to '<file>' csv
header
\copy (<query>) to '<file>' csv
header
\copy <table> (<cols>) from stdin
\copy ... program '<cmd>'
\copy ... with (format csv, delimiter ';')
\lo_import <file>
\g (format=csv) <file>
| Form | File lives on |
|---|---|
\copy |
your machine (client) |
COPY |
database server |
Variables & Scripting
\set <name> <value>
\set\unset <name>
psql -v <name>=<value>
SELECT :'<name>';
\set ON_ERROR_STOP on
\set AUTOCOMMIT off
\set ECHO queries
\gset [<prefix>]
\if <cond> ... \endif
\! <cmd>\? / \h <command>
psql -XRecipes
\copy (SELECT * FROM <table> WHERE <cond>) to 'out.csv' csv header
psql -X -1 -v ON_ERROR_STOP=1 -f migrate.sql <db>
n=$(psql -At -c "SELECT count(*) FROM <table>" <db>)
-- ~/.psqlrc\set QUIET 1\timing on\x auto\pset null '(null)'\unset QUIET



