PSQL(1) PostgreSQL 18.6 Documentation PSQL(1) (NAME) psql - PostgreSQL (SYNOPSIS) psql [option...] [dbname [username]] (DESCRIPTION) psql (front-end) PostgreSQL . PostgreSQL . . psql (meta-command) . (OPTIONS) -a --echo-all . ( .) ECHO all . -A --no-align (unaligned) . ( aligned .) \pset format unaligned . -b --echo-errors SQL . ECHO errors . -c command --command=command psql command . -f . -c -f psql -c -f . command ( psql ) . SQL psql -c . -c psql : psql -c '\x' -c 'SELECT * FROM foo;' echo '\x \\ SELECT * FROM foo;' | psql (\\ .) SQL -c . SQL BEGIN/COMMIT . ( Section 54.2.2.1 .) -c psql echo here-document : psql < CSV (Comma-Separated Values) . \pset format csv . -d dbname --dbname=dbname . dbname . dbname connection string . connection string . -e --echo-queries SQL . ECHO queries . -E --echo-hidden \d . psql . ECHO_HIDDEN on . -f filename --file=filename filename . -c . -c -f psql -c -f . \i . filename - ( ) EOF \q . . Readline ( -n ). psql < filename . -f . . ( ) . -F separator --field-separator=separator separator . \pset fieldsep \f . -h hostname --host=hostname . Unix-domain . -H --html HTML . \pset format html \H . -l --list . . \list . psql postgres ( -d ). -L filename --log-file=filename filename . -n --no-readline Readline ( "Command-Line Editing" ). -o filename --output=filename filename . \o . -p port --port=port TCP Unix-domain . PGPORT 5432. -P assignment --pset=assignment \pset . . LaTeX -P format=latex. -q --quiet psql . . . -c . QUIET on . -R separator --record-separator=separator separator . \pset recordsep . -s --single-step . . . -S --single-line (newline) SQL . . SQL . -t --tuples-only . \t \pset tuples_only . -T table_options --table-attr=table_options HTML . \pset tableattr . -U username --username=username username . ( .) -v assignment --set=assignment --variable=assignment \set. ( ) . . . . -V --version psql . -w --no-password . .pgpass . . \connect . -W --password psql . .pgpass psql . psql . -W . \connect . -x --expanded . \x \pset expanded . -X --no-psqlrc ( psqlrc ~/.psqlrc ). -z --field-separator-zero . \pset fieldsep_zero . -0 --record-separator-zero . xargs -0 . \pset recordsep_zero . -1 --single-transaction -c / -f . psql BEGIN COMMIT . ON_ERROR_STOP ROLLBACK . . BEGIN COMMIT ROLLBACK . . -? --help[=topic] psql . topic ( options) psql : commands psql options psql variables psql . psql 0 ( ) 1 2 ON_ERROR_STOP 3 . (USAGE) (Connecting to a Database) psql PostgreSQL . . -d -h -p -U psql . ( ) . . psql (Unix-domain socket) TCP/IP localhost . . . . . . . PGDATABASE PGHOST PGPORT / PGUSER . ( 32.15 .) ~/.pgpass . 32.16 . conninfo URI . . : $ psql "service=myservice sslmode=require" $ psql postgresql://dbmaster:5433/mydb?sslmode=require 32.18 LDAP . 32.1.2 . ( ) psql . psql "auto" ( LC_CTYPE ) . PGCLIENTENCODING . SQL (Entering SQL Commands) psql (prompt) psql => . : $ psql testdb psql (18.6) Type "help" for help. testdb=> SQL . - . . . . (secure schema usage pattern) search_path . options=-csearch_path= SELECT pg_catalog.set_config('search_path', '', false) SQL . psql SQL . psql (asynchronous notification events) LISTEN NOTIFY . C SQL psql . (Meta-Commands) psql psql psql . psql . . psql . . . . C \n ( ) \t () \b () \r ( ) \f () \digits () \xdigits () . () . (:) psql SQL (SQL Interpolation) . :'variable_name' :"variable_name" . :{?variable_name} . TRUE FALSE . (escape) . (`) . ( ) . :variable_name variable_name psql . :'variable_name' . ( .) (carriage return) (line feed) :'variable_name' . SQL ( ) . SQL : (") / . . FOO"BAR"BAZ fooBARbaz "A weird"" name" A weird" name . . . \\ ( ) SQL ( ) . SQL psql . . (current query buffer) . SQL . . x . (expanded mode) \x \pset expanded ..PP : \a . . . \pset . \bind [ parameter ] ... ($1 ) . : INSERT INTO tbl1 VALUES ($1, $2) \bind 'first value' 'second value' \g \g \gx \gset . psql (: 54.1.2) . psql . ( .) . \bind_named statement_name [ parameter ] ... \bind_named \bind . . : INSERT INTO tbls1 VALUES ($1, $2) \parse stmt1 \bind_named stmt1 'first value' 'second value' \g psql (: 54.1.2) . psql . \c \connect [ -reuse-previous=on|off ] [ dbname [ username ] [ host ] [ port ] | conninfo ] PostgreSQL . ( ) conninfo 32.1.1 . . dbname username host port - . sslmode. conninfo . -reuse-previous=on -reuse-previous=off . conninfo . host hostaddr . . libpq . . ( ) psql . . \connect . . \connect . \connect \connect . : => \c mydb myuser host.dom 6432 => \c service=foo => \c "host=localhost port=5432 dbname=mydb connect_timeout=10 sslmode=disable" => \c -reuse-previous=on sslmode=require -- changes only sslmode => \c postgresql://tom@localhost/mydb?application_name=myapp \C [ title ] . \pset title title . ( "caption" HTML .) \cd [ directory ] directory . . : 32.16. \! pwd . \close_prepared prepared_statement_name . . (no-op). : SELECT $1 \parse stmt1 \close_prepared stmt1 psql . psql . \conninfo SSL SSL . Client User Superuser ( ) (superuser) . SET ROLE . \copy { table [ ( column_list ) ] } from { 'filename' | program 'command' | stdin | pstdin } [ [ with ] ( option [, ...] ) ] [ where condition ] \copy { table [ ( column_list ) ] | ( query ) } to { 'filename' | program 'command' | stdout | pstdout } [ [ with ] ( option [, ...] ) ] () . COPY SQL psql . SQL . program command psql command . SQL . \copy ... from stdin \. EOF . SQL . \copy ... to stdout psql COPY count ( ). / psql \o from pstdin to pstdout . COPY SQL . / COPY . \copy . \copy . \copy ... to SQL COPY ... TO STDOUT \g filename \g |program . \copy . COPY SQL / . SQL . \copyright PostgreSQL . \crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ] ( \g) (crosstab grid) . . colV colH . colD . sortcolH . ( ) . SQL . colV colH . colH colV . colD colV colH colD . colV . colH . . sortcolH colH sortcolH . x colH y colV (x,y) colD colH x colV y . . . \d[Sx+] [ pattern ] ( view (materialized view) ) (composite type) pattern tablespace ( ) NOT NULL . (constraints) (rules) . foreign server . (" " Patterns .) \d : foreign data wrapper . \d+ : (comment) OID view view replica identity access method . S . \d pattern \dtvmsE view view . . x (expanded mode) \d pattern x \d ( \dx ) x S + . \d+x \dtvmsE+x . \da[Sx] [ pattern ] (aggregate functions) . pattern . S . x . \dA[x+] [ pattern ] (access methods) . pattern . x . + (handler function) . \dAc[x+] [access-method-pattern [input-type-pattern]] (operator classes) ( 36.16.1 ). access-method-pattern . input-type-pattern . x . + (operator family) . \dAf[x+] [access-method-pattern [input-type-pattern]] (operator families) ( 36.16.5 ). access-method-pattern . input-type-pattern . x . + . \dAo[x+] [access-method-pattern [operator-family-pattern]] ( 36.16.2 ). access-method-pattern . operator-family-pattern . x . + ( ) (leakproof) . \dAp[x+] [access-method-pattern [operator-family-pattern]] (operator families) ( 36.16.3 ). access-method-pattern . operator-family-pattern . x (expanded mode) . + . \db[x+] [ pattern ] (tablespaces) . pattern . x . + . \dc[Sx+] [ pattern ] (character-set encodings) . pattern . S . x . + . \dconfig[x+] [ pattern ] . pattern . pattern . ( \dconfig * .) x . + (context) ( ) . \dC[x+] [ pattern ] (type casts) . pattern . x . + leakproof . \dd[Sx] [ pattern ] constraint operator class operator family rule trigger . . \dd pattern . . S . x . SQL COMMENT . \dD[Sx+] [ pattern ] (domains) . pattern . S . x . + . \ddp[x] [ pattern ] . ( ) . pattern . x . ALTER DEFAULT PRIVILEGES . 5.8 . \dE[Sx+] [ pattern ] \di[Sx+] [ pattern ] \dm[Sx+] [ pattern ] \ds[Sx+] [ pattern ] \dt[Sx+] [ pattern ] \dv[Sx+] [ pattern ] E i m s t v foreign table index materialized view sequence table view . . \dti . x . + (permanent temporary unlogged) ( ) . pattern . S . \des[x+] [ pattern ] (foreign servers : "external servers") . pattern . x . + . \det[x+] [ pattern ] (foreign tables : "external tables") . pattern . x . + . \deu[x+] [ pattern ] (user mappings : "external users") . pattern . x . + . \deu+ . \dew[x+] [ pattern ] (foreign-data wrappers : "external wrappers") . pattern . x . + foreign-data wrapper . \df[anptwSx+] [ pattern [ arg_pattern ... ] ] "agg" ( aggregate) "normal" "procedure" "trigger" "window" . ( ) a n p t w . pattern . . ( - arg_pattern .) S . x (expanded mode) . + (volatility) (parallel safety) (leakproof) ( C ) . \sf . \dF[x+] [ pattern ] (text search configurations) . pattern . x . + (text search parser) (token type) . \dFd[x+] [ pattern ] (text search dictionaries) . pattern . x . + . \dFp[x+] [ pattern ] (text search parsers) . pattern . x . + . \dFt[x+] [ pattern ] (text search templates) . pattern . x . + . \dg[Sx+] [ pattern ] (database roles) . ( "users" "groups" "roles" \du .) S . pattern . x . + (comment) . \dl[x+] \lo_list (large objects) . x . + ( ) . \dL[Sx+] [ pattern ] (procedural languages) . pattern . S . x . + (call handler) (validator) . \dn[Sx+] [ pattern ] ( ) . pattern . S . x . + ( ) . \do[Sx+] [ pattern [ arg_pattern [ arg_pattern ] ] ] . pattern . arg_pattern . arg_pattern . ( - .) S . x . + (leakproof) . \dO[Sx+] [ pattern ] (collations) . pattern . S . x . + ( ) . . \dp[Sx] [ pattern ] (views) (sequences) . pattern . S . x . GRANT REVOKE . 5.8 . \dP[itnx+] [ pattern ] (partitioned relations) . pattern . t () i () . . n ("nested") . x . + . n + : . \drds[x] [ role-pattern [ database-pattern ] ] . (role-specific) (database-specific) . role-pattern database-pattern . * . x (expanded mode) . ALTER ROLE ALTER DATABASE . \drg[Sx] [ pattern ] (ADMIN INHERIT / SET) (grantor) . GRANT . S . pattern . x . \dRp[x+] [ pattern ] (replication publications) . pattern . x . + (schemas) . \dRs[x+] [ pattern ] (replication subscriptions) . pattern . x . + . \dT[Sx+] [ pattern ] . pattern . x . + enum . S . \du[Sx+] [ pattern ] . ( "" "" "" \dg .) S . pattern . x . + (comment) . \dx[x+] [ pattern ] . pattern . x . + . \dX[x] [ pattern ] (extended statistics) . pattern . x . ( Ndistinct) . defined NULL . ANALYZE (planner) pg_stats_ext . \dy[x+] [ pattern ] (event triggers) . pattern . x . + . \e \edit [ filename ] [ line_number ] filename . filename . . . psql . (semicolon) . . \g \r . : () . ( . \i .) psql . psql . Environment . \echo text [ ... ] . . : => \echo `date` Tue Oct 26 21:40:57 CEST 1999 -n ( ). \o \qecho . \warn . \ef [ function_description [ line_number ] ] (procedure) CREATE OR REPLACE FUNCTION CREATE OR REPLACE PROCEDURE . \edit . . (semicolon) . \g \r . foo(integer, text) . . CREATE FUNCTION . psql . ( .) () \ef . <<>> . \encoding [ encoding ] (encoding) . . \errverbose VERBOSITY verbose SHOW_CONTEXT always . \ev [ view_name [ line_number ] ] (view) CREATE OR REPLACE VIEW . \edit . . . \g \r . CREATE VIEW . psql . () \ev . \f [ string ] . (|) . \pset fieldsep . \g [ (option=value [...]) ] [ filename ] \g [ (option=value [...]) ] [ |command ] . \g option=value \pset option value . = . =value option \pset option value . filename |command (pipe) . (tuple) SQL . . \g . \g "" \o \pset . | command . . \gdesc ( ) . (syntax error) . . \getenv psql_var env_var env_var psql psql_var . env_var psql psql_var . : => \getenv home HOME => \echo :home /home/postgres \gexec ( ) SQL . (index) my_table: => SELECT format('create index on my_table(%I)', attname) -> FROM pg_attribute -> WHERE attrelid = 'my_table'::regclass AND attnum > 0 -> ORDER BY attnum -> \gexec CREATE INDEX CREATE INDEX CREATE INDEX CREATE INDEX . NULL . psql psql . ON_ERROR_STOP . ECHO . ( ECHO all queries \gexec .) . . \gset [ prefix ] psql ( Variables ). . . : => SELECT 'hello' AS var1, 10 AS var2 -> \gset => \echo :var1 :var2 hello 10 prefix : => SELECT 'hello' AS var1, 10 AS var2 -> \gset result_ => \echo :result_var1 :result_var2 hello 10 NULL (unset) . . . \gx [ (option=value [...]) ] [ filename ] \gx [ (option=value [...]) ] [ |command ] \gx \g (expanded) expanded=on \pset . \x . \h or \help [ command ] (syntax) SQL . command psql . command (*) SQL . () \help . . \help alter table . \H or \html HTML . HTML . \pset . \i or \include filename filename . filename - ( ) EOF \q . . Readline . ECHO all . \if expression \elif expression \else \endif . \if \endif . \elif \else . ( ) . \if \elif () . true \elif \else \endif . \if \elif \elif false . \else \if \elif . expression \if \elif . / (on/off) . : true false 1 0 on off yes no. t T tR true . true false false . (\if \elif \else \endif) . . . . \include \if EOF psql . : -- check for the existence of two separate records in the database and store -- the results in separate psql variables SELECT EXISTS(SELECT 1 FROM customer WHERE customer_id = 123) as is_customer, EXISTS(SELECT 1 FROM employee WHERE employee_id = 456) as is_employee \gset \if :is_customer SELECT * FROM customer WHERE customer_id = 123; \elif :is_employee \echo 'is not a customer but is an employee' SELECT * FROM employee WHERE employee_id = 456; \else \if yes \echo 'not a customer or employee' \else \echo 'this will never print' \endif \endif \ir \include_relative filename \ir \i . . \ir . \l[x+] \list[x+] [ pattern ] . pattern . x . + tablespace . CONNECT (superuser) pg_read_all_stats . \lo_export loid filename OID loid filename . lo_export . OID \lo_list . \lo_import filename [ comment ] PostgreSQL . . : foo=> \lo_import '/home/peter/pictures/photo.xcf' 'a picture of me' lo_import 152801 152801 . . OID \lo_list . lo_import . \lo_list[x+] PostgreSQL . x . + ( ) . \lo_unlink loid OID loid . OID \lo_list . \o \out [ filename ] \o \out [ |command ] filename command . . | command . . " " ( \d) . \qecho . \p \print . . \parse statement_name (prepared statement) . . : SELECT $1 \parse stmt1 (extended query protocol) psql . Parse (F) psql . . \password [ username ] ( ). ALTER ROLE . . \prompt [ text ] name name . text . ( .) \prompt . -f \prompt . \pset [ option [ value ] ] . option . value . value (toggle) . value . \pset . : border value . . HTML border=... . 0 ( ) 1 ( ) 2 ( ) 2 border = 2 . latex latex-longtable 3 . columns wrapped (pager) expanded . () COLUMNS COLUMNS . columns wrapped . columns (pipe) (wrap) . csv_fieldsep CSV . CSV . . expanded ( x) value on off ( ) auto . value on off . . "" . auto . auto aligned wrapped . (off) . fieldsep unaligned . (tab-separated) . : \pset fieldsep '\t'. '|' ( ) . fieldsep_zero unaligned (zero byte) . footer value on off ( (n rows)) . value (on) (off) . format aligned asciidoc csv html latex latex-longtable troff-ms unaligned wrapped . . aligned . unaligned . . CSV . csv RFC 4180 . CSV COPY . tuples_only on . . (\n) Microsoft Windows (\r\n) . \pset csv_fieldsep . wrapped aligned . columns . psql wrapped aligned . asciidoc html latex latex-longtable troff-ms . ! HTML LaTeX . latex tabular LaTeX . latex-longtable longtable booktabs LaTeX . linestyle ascii old-ascii unicode . . ( .) ascii . aligned wrapped . ascii ASCII . + . wrapped (.) . old-ascii ASCII PostgreSQL 8.4 . : . ; . unicode (box-drawing) . (carriage return) . . border linestyle . ASCII . null null . . \pset null '(null)' . numericlocale value on off . value . pager (pager) psql . pager off . pager on . pager always . \pset pager value . PSQL_PAGER PAGER (pipe) . ( more) . \watch PSQL_WATCH_PAGER . psql ( pspg --stream) . pager_min_lines pager_min_lines . 0 . recordsep () (unaligned) . (newline) . recordsep_zero . tableattr ( T) HTML table . cellpadding bgcolor . border \pset border . value . latex-longtable . '0.2 0.2 0.6'. . title ( C) . . value . tuples_only ( t) value on off - (tuples-only) . value - . . - . unicode_border_linestyle unicode single double . unicode_column_linestyle unicode single double . unicode_header_linestyle unicode single double . xheader_width full ( ) column page integer value . full: () . column: . page: . integer value: . . \pset . \a \C \f \H \t \T \x . \q \quit psql . . \qecho text [ ... ] \echo \o . \r or \reset () . \restrict restrict_key <<>> (restricted) . \unrestrict . - . (plain-text dumps) pg_dump pg_dumpall pg_restore . \s [ filename ] psql filename . filename ( ). psql Readline . \set [ name [ value [ ... ] ] ] psql name value . . \unset . \set psql . . Variables . . psql . Variables . SQL SET . \setenv name [ value ] name value value . : testdb=> \setenv PAGER less testdb=> \setenv LESS -imx4F \sf[+] function_description (procedure) CREATE OR REPLACE FUNCTION CREATE OR REPLACE PROCEDURE . \o . foo(integer, text). . + . () \sf . \sv[+] view_name (view) CREATE OR REPLACE VIEW . \o . + . () \sv . \startpipeline \sendpipeline \syncpipeline \endpipeline \flushrequest \flush \getresults [ number_results ] (pipelining) SQL . (pipeline) \startpipeline \endpipeline . \syncpipeline (sync message) . . Section 32.5 . (extended query protocol) . (semicolon) . \bind \bind_named \close_prepared \parse . \sendpipeline . \g \gx \gdesc . \flushrequest (flush) \getresults (sync) . \getresults (push) . \flush . \getresults number_results . number_results . 0 . (prompt) . %P . COPY . : \startpipeline SELECT * FROM pg_class; SELECT 1 \bind \sendpipeline \flushrequest \getresults \endpipeline \t (/ ). \pset tuples_only . \T table_options HTML table . \pset tableattr table_options . \timing [ on | off ] SQL . . minutes:seconds . \unrestrict restrict_key <<>> (restricted - ) \restrict . (plain-text dumps) pg_dump pg_dumpall pg_restore . \unrestrict . \unset name psql name () . psql \unset . Variables . \w \write filename \w \write |command filename command . . | command . . \warn text [ ... ] \echo psql . \watch [ i[nterval]=seconds ] [ c[ount]=times ] [ m[in_rows]=rows ] [ seconds ] ( \g ) ( ) . ( ) . WATCH_INTERVAL . seconds interval= . \pset title ( ) . . \x [ on | off | auto ] (expanded table formatting) . \pset expanded . \z[Sx] [ pattern ] . pattern . S . x . (alias) \dp ("display privileges") . \! [ command ] (sub-shell) psql . command . () \! . . \? [ topic ] . topic ( commands) psql : commands psql options psql variables psql . \; - . psql SQL . : select 1; select 2; select 3; SQL . \; . : select 1\; select 2\; select 3; SQL . BEGIN/COMMIT . ( Section 54.2.2.1 .) (Patterns) \d pattern ( ) . . SQL \dt FOO foo . SQL (double quotes) . SQL . \dt "FOO""BAR" FOO"BAR ( foo"bar) . SQL \dt FOO"FOO"BAR fooFOObar ..PP pattern \d -- * . ( . .) *.* . * ( ) ? . ( Unix .) \dt int* int . * ? . (.) . \dt foo*.*bar* bar foo . . . (.) . . (.) . \dn mydb.*foo* foo . . (regular-expression) [0-9] . 9.7.3 . * .* ? . $ . ? . (R+|) R* (R|) R? . $ ( $ ). (anchored) * / . . ( \do) . (Advanced Features) (Variables) psql Unix . / . ( ) . psql \set . testdb=> \set foo bar foo bar . : testdb=> \echo :foo bar SQL << SQL>> (SQL Interpolation) . \set . ( ) \unset . \set . (Note) \set . \set :foo 'something' " " " " Perl PHP . ( ) . \set bar :foo . psql . psql . ASCII ( ) . . psql (unset) . \unset . \set on on . on off true false . : AUTOCOMMIT on () SQL (commit) . SQL BEGIN START TRANSACTION . off SQL COMMIT END . autocommit-off BEGIN BEGIN ( VACUUM). (Note) autocommit-off ABORT ROLLBACK . . (Note) autocommit-on PostgreSQL autocommit-off SQL . autocommit-off psqlrc ~/.psqlrc . COMP_KEYWORD_CASE SQL (letter case) . lower upper . preserve-lower preserve-upper () . DBNAME . ( ) . ECHO all . ( .) -a . queries psql . -e . errors . -b . none () . ECHO_HIDDEN on (backslash command) . PostgreSQL . ( -E .) noexec . off . ENCODING . ( ) \encoding . ERROR SQL true false . SQLSTATE . FETCH_COUNT SELECT . . . . aligned FETCH_COUNT . . HIDE_TABLEAM true (access method) . . HIDE_TOAST_COMPRESSION true . . HISTCONTROL ignorespace (space) . ignoredups . ignoreboth . none () . Bash . HISTFILE . PSQL_HISTORY . ~/.psql_history Windows %APPDATA%\postgresql\psql_history . : \set HISTFILE ~/.psql_history-:DBNAME ~/.psqlrc psql . Bash . HISTSIZE ( ). . Bash . HOST . ( ) . IGNOREEOF EOF ( Control+D) psql . EOF . . . Bash . LASTOID OID INSERT \lo_import . SQL . PostgreSQL 12 OID LASTOID INSERT 0 . LAST_ERROR_MESSAGE LAST_ERROR_SQLSTATE SQLSTATE psql 00000 . ON_ERROR_ROLLBACK on . interactive . off () (abort) . SAVEPOINT (savepoint) . ON_ERROR_STOP . on . psql psql 3 (fatal) 1 . ( ) . SQL . PIPELINE_COMMAND_COUNT . PIPELINE_RESULT_COUNT \flushrequest \syncpipeline . \getresults . PIPELINE_SYNC_COUNT sync . PORT . ( ) (unset) . PROMPT1 PROMPT2 PROMPT3 (prompts) psql . Prompting . QUIET on -q . . ROW_COUNT SQL 0 . SERVER_VERSION_NAME SERVER_VERSION_NUM 9.6.2 10.1 11beta1 90602 100001. ( ) (unset) . SERVICE . SHELL_ERROR true false . \! \g \o \w \copy (`) . \o \o . : SHELL_EXIT_CODE. SHELL_EXIT_CODE . 0-127 128-255 -1 . \! \g \o \w \copy (`) . \o \o . : SHELL_ERROR. SHOW_ALL_RESULTS off (\;) . on . off psql . SHOW_CONTEXT never errors always CONTEXT . errors ( context notice ). VERBOSITY terse sqlstate . ( \errverbose .) SINGLELINE on -S . SINGLESTEP on -s . SQLSTATE ( A ) SQL 00000 . USER . ( ) (unset). VERBOSITY default verbose terse sqlstate . ( \errverbose .) VERSION VERSION_NAME VERSION_NUM psql ( 9.6.2 10.1 11beta1) ( 90602 100001). (unset). WATCH_INTERVAL \watch . . . SQL (SQL Interpolation) psql SQL (<<>>) . psql SQL (quote) . (:) . testdb=> \set foo 'my_table' testdb=> SELECT * FROM :foo; my_table . : (backslash) . . SQL . SQL (single quote) . SQL (double quote) . . : testdb=> \set foo 'my_table' testdb=> SELECT * FROM :"foo"; SQL . ':foo' ( ). . : testdb=> \set content `cat my_file.txt` testdb=> INSERT INTO my_table VALUES (:'content'); ( my_file.txt NUL . psql NUL .) SQL ( :name :'name' :"name") . (backslash) (escape) . :{?name} TRUE FALSE . SQL ( ECPG) . (array slices) (type casts) PostgreSQL . - SQL psql . (Prompting) (prompts) psql . PROMPT1 PROMPT2 PROMPT3 . psql . (semicolon) . SQL COPY FROM STDIN . (%) . . : %M ( ) [local] (Unix domain socket) [local:/dir/name] . %m [local] . %> . %n . ( SET SESSION AUTHORIZATION .) %s . %/ . %~ %/ ~ () . %# (superuser) # >. ( SET SESSION AUTHORIZATION .) %p (PID) (backend) . %P (pipeline): off on abort (aborted) . %R = @ ^ ! ( \connect ). %R psql : - * /* ... */ (single quote) (double quote) dollar-quoted ( () . %R . %x : * ! ? ( ). %l 1. %digits (octal) . %:name: name psql. <<>> . %`command` command "" (back-tick). %[ ... %] . Readline %[ %] . . : testdb=> \set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%[%033[0m%]%# ' VT100 (1;) (33;40) . %w (whitespace) PROMPT1. PROMPT2 . %%. '%/%R%x%# ' '>> ' . tcsh . (Command-Line Editing) psql Readline libedit . psql psql . control-P . (tab completion) SQL ( ) . ins TAB insert into . (schema) TAB . ( TAB .) SQL . . BEGIN SET TRANSACTION ISOLATION LEVEL . .inputrc : $if psql set disable-completion on $endif ( psql Readline . .) -n (--no-readline) Readline psql . . (copy-and-paste) TAB . COLUMNS \pset columns wrapped . PGDATABASE PGHOST PGPORT PGUSER ( 32.15 ). PG_COLOR . always auto never. PSQL_EDITOR EDITOR VISUAL \e \ef \ev. . vi notepad.exe . PSQL_EDITOR_LINENUMBER_ARG \e \ef \ev . Emacs vi . . : PSQL_EDITOR_LINENUMBER_ARG='+' PSQL_EDITOR_LINENUMBER_ARG='--line ' + ( vi ) . PSQL_HISTORY . (~) . PSQL_PAGER PAGER (pipe) . more less . PSQL_PAGER PAGER \pset . . more Cygwin less . PSQL_WATCH_PAGER \watch . PSQL_WATCH_PAGER . pspg ( PostgreSQL ) --stream \watch . PSQLRC .psqlrc . (~) . SHELL \!. TMPDIR . /tmp . PostgreSQL libpq ( 32.15 )..SH " (FILES)" psqlrc ~/.psqlrc -X psql (psqlrc) (~/.psqlrc) . / \set SET . psqlrc . " " pg_config --sysconfdir . PostgreSQL ../etc/ . PGSYSCONFDIR . .psqlrc . Windows %APPDATA%\postgresql\psqlrc.conf . PSQLRC . PostgreSQL psql ~/.psqlrc-18 ~/.psqlrc-18.6. . . .psql_history ~/.psql_history Windows %APPDATA%\postgresql\psql_history . psql HISTFILE PSQL_HISTORY . (NOTES) o psql . psql . \d 9.2 psql. SQL . psql psql . psql . . o PostgreSQL 9.6 -c -X (--no-psqlrc) . o PostgreSQL 8.4 psql (whitespace) . . (NOTES FOR WINDOWS USERS) psql " " . Windows - psql . psql . : o cmd.exe /c chcp 1252. (1252 .) Cygwin /etc/profile . o Lucida Console (raster font) ANSI . . : testdb=> CREATE TABLE my_table ( testdb(> first integer not null default 0, testdb(> second text) testdb-> ; CREATE TABLE : testdb=> \d my_table Table "public.my_table" Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- first | integer | | not null | 0 second | text | | | : testdb=> \set PROMPT1 '%n@%m %~%R%# ' peter@localhost testdb=> : peter@localhost testdb=> SELECT * FROM my_table; first | second -------+-------- 1 | one 2 | two 3 | three 4 | four (4 rows) \pset : peter@localhost testdb=> \pset border 2 Border style is 2. peter@localhost testdb=> SELECT * FROM my_table; +-------+--------+ | first | second | +-------+--------+ | 1 | one | | 2 | two | | 3 | three | | 4 | four | +-------+--------+ (4 rows) peter@localhost testdb=> \pset border 0 Border style is 0. peter@localhost testdb=> SELECT * FROM my_table; first second ----- ------ 1 one 2 two 3 three 4 four (4 rows) peter@localhost testdb=> \pset border 1 Border style is 1. peter@localhost testdb=> \pset format csv Output format is csv. peter@localhost testdb=> \pset tuples_only Tuples only is on. peter@localhost testdb=> SELECT second, first FROM my_table; one,1 two,2 three,3 four,4 peter@localhost testdb=> \pset format unaligned Output format is unaligned. peter@localhost testdb=> \pset fieldsep '\t' Field separator is " ". peter@localhost testdb=> SELECT second, first FROM my_table; one 1 two 2 three 3 four 4 : peter@localhost testdb=> \a \t \x Output format is aligned. Tuples only is off. Expanded display is on. peter@localhost testdb=> SELECT * FROM my_table; -[ RECORD 1 ]- first | 1 second | one -[ RECORD 2 ]- first | 2 second | two -[ RECORD 3 ]- first | 3 second | three -[ RECORD 4 ]- first | 4 second | four \g : peter@localhost testdb=> SELECT * FROM my_table peter@localhost testdb-> \g (format=aligned tuples_only=off expanded=on) -[ RECORD 1 ]- first | 1 second | one -[ RECORD 2 ]- first | 2 second | two -[ RECORD 3 ]- first | 3 second | three -[ RECORD 4 ]- first | 4 second | four \df int*pl bigint : testdb=> \df int*pl * bigint List of functions Schema | Name | Result data type | Argument data types | Type ------------+---------+------------------+---------------------+------ pg_catalog | int28pl | bigint | smallint, bigint | func pg_catalog | int48pl | bigint | integer, bigint | func pg_catalog | int8pl | bigint | bigint, bigint | func (3 rows) + x (expanded mode) : testdb=> \df+x int*pl integer bigint List of functions -[ RECORD 1 ]-------+----------------------------- Schema | pg_catalog Name | int48pl Result data type | bigint Argument data types | integer, bigint Type | func Volatility | immutable Parallel | safe Owner | postgres Security | invoker Leakproof? | no Access privileges | Language | internal Internal name | int48pl Description | implementation of + operator \crosstabview (crosstab) : testdb=> SELECT first, second, first > 2 AS gt2 FROM my_table; first | second | gt2 -------+--------+----- 1 | one | f 2 | two | f 3 | three | t 4 | four | t (4 rows) testdb=> \crosstabview first second first | one | two | three | four -------+-----+-----+-------+------ 1 | f | | | 2 | | f | | 3 | | | t | 4 | | | | t (4 rows) . testdb=> SELECT t1.first as "A", t2.first+100 AS "B", t1.first*(t2.first+100) as "AxB", testdb-> row_number() over(order by t2.first) AS ord testdb-> FROM my_table t1 CROSS JOIN my_table t2 ORDER BY 1 DESC testdb-> \crosstabview "A" "B" "AxB" ord A | 101 | 102 | 103 | 104 ---+-----+-----+-----+----- 4 | 404 | 408 | 412 | 416 3 | 303 | 306 | 309 | 312 2 | 202 | 204 | 206 | 208 1 | 101 | 102 | 103 | 104 (4 rows) PostgreSQL 18.6 2026 PSQL(1)