PostgreSQL 8.3 PSQL Cheat Sheet

psql is located in the bin folder of the PostgreSQL install and PgAdmin III install.

This is psql 8.3.5, the PostgreSQL interactive terminal.

Usage: psql [OPTIONS]... [DBNAME [USERNAME]]

General options:

  -c COMMAND
  -d, --dbname=NAME      
  -f, --file=FILENAME 
  --help   
  -l, --list          
  -v NAME=VALUE      
  --version
  -X
  run only single command (SQL or internal) and exit
  specify database name to connect to (default: "logged in username here")
  execute commands from file, then exit
  show this help, then exit
  list available databases, then exit
  set psql variable NAME to VALUE
  output version information, then exit
  do not read startup file (~/.psqlrc)

Interactive Console:

TYPE:  \copyright 
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit
GENERAL:
  \c[onnect] [DBNAME|- USER|- HOST|- PORT|-]                
  \cd [DIR]     
  \encoding [ENCODING]
  \h [NAME]      
  \set [NAME [VALUE]]
  \timing  
  \unset NAME
  \prompt [TEXT] NAME
  \! [COMMAND]
 
QUERY BUFFER:
  \e [FILE]
  \g [FILE]
  \p
  \r
  \w FILE
  
INPUT/OUTPUT:
  \echo [STRING]
  \i FILE
  \o [FILE]
  \qecho [STRING]
  
INFORMATIONAL:
  \d [NAME]
  \d{t|i|s|v|S} [PATTERN] (add "+" for more detail)
  \da [PATTERN]
  \db [PATTERN]
  \dc [PATTERN]
  \dC 
  \dd [PATTERN]
  \dD [PATTERN]
  \df [PATTERN]
  \dF [PATTERN]
  \dFd [PATTERN]
  \dFt [PATTERN]
  \dFp [PATTERN]
  \dg [PATTERN]
  \dn [PATTERN]
  \do [NAME]
  \dl  
  \dp [PATTERN] 
  \dT [PATTERN]
  \du [PATTERN]
  \l    
  \z [PATTERN]
  
FORMATTING
  \a 
  \C [STRING]
  \f [STRING]
  \H
  \pset NAME [VALUE] 
  
  
  \t 
  \T [STRING]
  \x
  
COPY, LARGE OBJECT
  \copy ...  
  \lo_export LOBOID FILE
  \lo_import FILE [COMMENT]
  \lo_list
  \lo_unlink LOBOID
for distribution terms
for help with SQL commands
for help with psql commands
or terminate with semicolon to execute query
to quit

connect to new database
change the current working directory
show or set client encoding
help on syntax of SQL commands, * for all commands
set internal variable, or list all if no parameters
toggle timing of commands (currently off)
unset (delete) internal variable
prompt user to set internal variable
execute command in shell or start interactive shell


edit the query buffer (or file) with external editor
send query buffer to server (and results to file or |pipe)
show the contents of the query buffer
reset (clear) the query buffer
write query buffer to file


write string to standard output
execute commands from file
send all query results to file or |pipe
write string to query output stream (see \o)


describe table, index, sequence, or view
list tables/indexes/sequences/views/system tables
list aggregate functions
list tablespaces (add "+" for more detail)
list conversions
list casts
show comment for object
list domains
list functions (add "+" for more detail)
list text search configurations (add "+" for more detail)
list text search dictionaries (add "+" for more detail)
list text search templates
list text search parsers (add "+" for more detail)
list groups
list schemas (add "+" for more detail)
list operators
list large objects, same as \lo_list
list table, view, and sequence access privileges
list data types (add "+" for more detail)
list users
list all databases (add "+" for more detail)
list table, view, and sequence access privileges (same as \dp)


toggle between unaligned and aligned output mode
set table title, or unset if none
show or set field separator for unaligned query output
toggle HTML output mode (currently off)
set table output option 
  (NAME := {format|border|expanded|fieldsep|footer|null|numericlocale|recordsep
  |tuples_only|title|tableattr|pager})
show only rows (currently off)
set HTML <table> tag attributes, or unset if none
toggle expanded output (currently off)


perform SQL COPY with data stream to the client host
LOBOID FILE
FILE [COMMENT]

large object operations

Connection options:

-h, --host=HOSTNAME database server host or socket directory -p, --port=PORT database server port number -U, --username=NAME connect as specified database user -W, --password force password prompt (should happen automatically) -e, --exit-on-error exit on error, default is to continue -d DBNAME some database

psql automated shell examples

restore whole server
psql --host=localhost --username=someuser -f /path/to/pgdumpall.sql
Run an sql batch script against a database
psql -h localhost -U someuser -d somedb -f /path/to/somefile.sql
Run an sql batch script against a database and send output to file
psql -h localhost -U someuser -d somedb -f /path/to/scriptfile.sql  -o /path/to/outputfile.txt
Run a single statement against a db
psql -U postgres -d pagila -c "CREATE TABLE test(some_id serial PRIMARY KEY, some_text text);"
Output data in html format
psql -h someserver -p 5432 -U someuser -d somedb -H -c "SELECT * FROM sometable" -o mydata.html

psql Interactive mode

Launch Interactive session
psql -h localhost -U postgres -d somedb
View help for SELECT * LIMIT
\h  SELECT * LIMIT
List all tables in db with descriptions
\dt+
List all tables in db with s in the name
\dt *s*
Cancel out of MORE screen
:q
http://www.postgresonline.com