3 PostgreSQL documentation
6 <refentry id=
"APP-PSQL">
8 <refentrytitle id=
"app-psql-title"><application>psql
</application></refentrytitle>
9 <manvolnum>1</manvolnum>
10 <refmiscinfo>Application
</refmiscinfo>
14 <refname><application>psql
</application></refname>
16 <productname>PostgreSQL
</productname> interactive terminal
20 <indexterm zone=
"app-psql">
21 <primary>psql
</primary>
26 <command>psql
</command>
27 <arg rep=
"repeat"><replaceable class=
"parameter">option
</replaceable></arg>
28 <arg><replaceable class=
"parameter">dbname
</replaceable>
29 <arg><replaceable class=
"parameter">username
</replaceable></arg></arg>
34 <title>Description
</title>
37 <application>psql
</application> is a terminal-based front-end to
38 <productname>PostgreSQL
</productname>. It enables you to type in
39 queries interactively, issue them to
40 <productname>PostgreSQL
</productname>, and see the query results.
41 Alternatively, input can be from a file. In addition, it provides a
42 number of meta-commands and various shell-like features to
43 facilitate writing scripts and automating a wide variety of tasks.
47 <refsect1 id=
"R1-APP-PSQL-3">
48 <title>Options
</title>
52 <term><option>-a<
/></term>
53 <term><option>--echo-all<
/></term>
56 Print all input lines to standard output as they are read. This is more
57 useful for script processing rather than interactive mode. This is
58 equivalent to setting the variable
<varname>ECHO
</varname> to
59 <literal>all
</literal>.
65 <term><option>-A<
/></term>
66 <term><option>--no-align<
/></term>
69 Switches to unaligned output mode. (The default output mode is
76 <term><option>-c
<replaceable class=
"parameter">command
</replaceable><
/></term>
77 <term><option>--command
<replaceable class=
"parameter">command
</replaceable><
/></term>
80 Specifies that
<application>psql
</application> is to execute one
81 command string,
<replaceable class=
"parameter">command
</replaceable>,
82 and then exit. This is useful in shell scripts.
85 <replaceable class=
"parameter">command
</replaceable> must be either
86 a command string that is completely parsable by the server (i.e.,
87 it contains no
<application>psql
</application> specific features),
88 or a single backslash command. Thus you cannot mix
89 <acronym>SQL
</acronym> and
<application>psql
</application>
90 meta-commands with this option. To achieve that, you could
91 pipe the string into
<application>psql
</application>, like
92 this:
<literal>echo '\x \\ SELECT * FROM foo;' | psql
</literal>.
93 (
<literal>\\<
/> is the separator meta-command.)
96 If the command string contains multiple SQL commands, they are
97 processed in a single transaction, unless there are explicit
98 <command>BEGIN<
/>/
<command>COMMIT<
/> commands included in the
99 string to divide it into multiple transactions. This is
100 different from the behavior when the same string is fed to
101 <application>psql
</application>'s standard input.
107 <term><option>-d
<replaceable class=
"parameter">dbname
</replaceable><
/></term>
108 <term><option>--dbname
<replaceable class=
"parameter">dbname
</replaceable><
/></term>
111 Specifies the name of the database to connect to. This is
112 equivalent to specifying
<replaceable
113 class=
"parameter">dbname
</replaceable> as the first non-option
114 argument on the command line.
117 If this parameter contains an
<symbol>=
</symbol> sign, it is treated as a
118 <parameter>conninfo
</parameter> string. See
<xref linkend=
"libpq-connect"> for more information.
124 <term><option>-e<
/></term>
125 <term><option>--echo-queries<
/></term>
128 Copy all SQL commands sent to the server to standard output as well.
130 to setting the variable
<varname>ECHO
</varname> to
131 <literal>queries
</literal>.
137 <term><option>-E<
/></term>
138 <term><option>--echo-hidden<
/></term>
141 Echo the actual queries generated by
<command>\d
</command> and other backslash
142 commands. You can use this to study
<application>psql
</application>'s
143 internal operations. This is equivalent to
144 setting the variable
<varname>ECHO_HIDDEN
</varname> from within
145 <application>psql
</application>.
151 <term><option>-f
<replaceable class=
"parameter">filename
</replaceable><
/></term>
152 <term><option>--file
<replaceable class=
"parameter">filename
</replaceable><
/></term>
155 Use the file
<replaceable class=
"parameter">filename
</replaceable>
156 as the source of commands instead of reading commands interactively.
157 After the file is processed,
<application>psql
</application>
158 terminates. This is in many ways equivalent to the internal
159 command
<command>\i
</command>.
163 If
<replaceable>filename
</replaceable> is
<literal>-
</literal>
164 (hyphen), then standard input is read.
168 Using this option is subtly different from writing
<literal>psql
170 class=
"parameter">filename
</replaceable></literal>. In general,
171 both will do what you expect, but using
<literal>-f
</literal>
172 enables some nice features such as error messages with line
173 numbers. There is also a slight chance that using this option will
174 reduce the start-up overhead. On the other hand, the variant using
175 the shell's input redirection is (in theory) guaranteed to yield
176 exactly the same output that you would have gotten had you entered
183 <term><option>-F
<replaceable class=
"parameter">separator
</replaceable><
/></term>
184 <term><option>--field-separator
<replaceable class=
"parameter">separator
</replaceable><
/></term>
187 Use
<replaceable class=
"parameter">separator
</replaceable> as the
188 field separator for unaligned output. This is equivalent to
189 <command>\pset fieldsep
</command> or
<command>\f
</command>.
195 <term><option>-h
<replaceable class=
"parameter">hostname
</replaceable><
/></term>
196 <term><option>--host
<replaceable class=
"parameter">hostname
</replaceable><
/></term>
199 Specifies the host name of the machine on which the
200 server is running. If the value begins
201 with a slash, it is used as the directory for the Unix-domain
208 <term><option>-H<
/></term>
209 <term><option>--html<
/></term>
212 Turn on
<acronym>HTML
</acronym> tabular output. This is
213 equivalent to
<literal>\pset format html
</literal> or the
214 <command>\H
</command> command.
220 <term><option>-l<
/></term>
221 <term><option>--list<
/></term>
224 List all available databases, then exit. Other non-connection
225 options are ignored. This is similar to the internal command
226 <command>\list
</command>.
232 <term><option>-L
<replaceable class=
"parameter">filename
</replaceable><
/></term>
233 <term><option>--log-file
<replaceable class=
"parameter">filename
</replaceable><
/></term>
236 Write all query output into file
<replaceable
237 class=
"parameter">filename
</replaceable>, in addition to the
238 normal output destination.
244 <term><option>-o
<replaceable class=
"parameter">filename
</replaceable><
/></term>
245 <term><option>--output
<replaceable class=
"parameter">filename
</replaceable><
/></term>
248 Put all query output into file
<replaceable
249 class=
"parameter">filename
</replaceable>. This is equivalent to
250 the command
<command>\o
</command>.
256 <term><option>-p
<replaceable class=
"parameter">port
</replaceable><
/></term>
257 <term><option>--port
<replaceable class=
"parameter">port
</replaceable><
/></term>
260 Specifies the TCP port or the local Unix-domain
261 socket file extension on which the server is listening for
262 connections. Defaults to the value of the
<envar>PGPORT
</envar>
263 environment variable or, if not set, to the port specified at
264 compile time, usually
5432.
270 <term><option>-P
<replaceable class=
"parameter">assignment
</replaceable><
/></term>
271 <term><option>--pset
<replaceable class=
"parameter">assignment
</replaceable><
/></term>
274 Allows you to specify printing options in the style of
275 <command>\pset
</command> on the command line. Note that here you
276 have to separate name and value with an equal sign instead of a
277 space. Thus to set the output format to LaTeX, you could write
278 <literal>-P format=latex
</literal>.
284 <term><option>-q<
/></term>
285 <term><option>--quiet<
/></term>
288 Specifies that
<application>psql
</application> should do its work
289 quietly. By default, it prints welcome messages and various
290 informational output. If this option is used, none of this
291 happens. This is useful with the
<option>-c
</option> option.
292 Within
<application>psql
</application> you can also set the
293 <varname>QUIET
</varname> variable to achieve the same effect.
299 <term><option>-R
<replaceable class=
"parameter">separator
</replaceable><
/></term>
300 <term><option>--record-separator
<replaceable class=
"parameter">separator
</replaceable><
/></term>
303 Use
<replaceable class=
"parameter">separator
</replaceable> as the
304 record separator for unaligned output. This is equivalent to the
305 <command>\pset recordsep
</command> command.
311 <term><option>-s<
/></term>
312 <term><option>--single-step<
/></term>
315 Run in single-step mode. That means the user is prompted before
316 each command is sent to the server, with the option to cancel
317 execution as well. Use this to debug scripts.
323 <term><option>-S<
/></term>
324 <term><option>--single-line<
/></term>
327 Runs in single-line mode where a newline terminates an SQL command, as a
333 This mode is provided for those who insist on it, but you are not
334 necessarily encouraged to use it. In particular, if you mix
335 <acronym>SQL
</acronym> and meta-commands on a line the order of
336 execution might not always be clear to the inexperienced user.
343 <term><option>-t<
/></term>
344 <term><option>--tuples-only<
/></term>
347 Turn off printing of column names and result row count footers,
348 etc. This is equivalent to the
<command>\t
</command> command.
354 <term><option>-T
<replaceable class=
"parameter">table_options
</replaceable><
/></term>
355 <term><option>--table-attr
<replaceable class=
"parameter">table_options
</replaceable><
/></term>
358 Allows you to specify options to be placed within the
359 <acronym>HTML
</acronym> <sgmltag>table
</sgmltag> tag. See
360 <command>\pset
</command> for details.
366 <term><option>-U
<replaceable class=
"parameter">username
</replaceable><
/></term>
367 <term><option>--username
<replaceable class=
"parameter">username
</replaceable><
/></term>
370 Connect to the database as the user
<replaceable
371 class=
"parameter">username
</replaceable> instead of the default.
372 (You must have permission to do so, of course.)
378 <term><option>-v
<replaceable class=
"parameter">assignment
</replaceable><
/></term>
379 <term><option>--set
<replaceable class=
"parameter">assignment
</replaceable><
/></term>
380 <term><option>--variable
<replaceable class=
"parameter">assignment
</replaceable><
/></term>
383 Perform a variable assignment, like the
<command>\set
</command>
384 internal command. Note that you must separate name and value, if
385 any, by an equal sign on the command line. To unset a variable,
386 leave off the equal sign. To just set a variable without a value,
387 use the equal sign but leave off the value. These assignments are
388 done during a very early stage of start-up, so variables reserved
389 for internal purposes might get overwritten later.
395 <term><option>-V<
/></term>
396 <term><option>--version<
/></term>
399 Print the
<application>psql
</application> version and exit.
405 <term><option>-w<
/></term>
406 <term><option>--no-password<
/></term>
409 Never issue a password prompt. If the server requires password
410 authentication and a password is not available by other means
411 such as a
<filename>.pgpass
</filename> file, the connection
412 attempt will fail. This option can be useful in batch jobs and
413 scripts where no user is present to enter a password.
417 Note that this option will remain set for the entire session,
418 and so it affects uses of the meta-command
419 <command>\connect
</command> as well as the initial connection attempt.
425 <term><option>-W<
/></term>
426 <term><option>--password<
/></term>
429 Force
<application>psql
</application> to prompt for a
430 password before connecting to a database.
434 This option is never essential, since
<application>psql
</application>
435 will automatically prompt for a password if the server demands
436 password authentication. However,
<application>psql
</application>
437 will waste a connection attempt finding out that the server wants a
438 password. In some cases it is worth typing
<option>-W<
/> to avoid
439 the extra connection attempt.
443 Note that this option will remain set for the entire session,
444 and so it affects uses of the meta-command
445 <command>\connect
</command> as well as the initial connection attempt.
451 <term><option>-x<
/></term>
452 <term><option>--expanded<
/></term>
455 Turn on the expanded table formatting mode. This is equivalent to the
456 <command>\x
</command> command.
462 <term><option>-X,<
/></term>
463 <term><option>--no-psqlrc<
/></term>
466 Do not read the start-up file (neither the system-wide
467 <filename>psqlrc
</filename> file nor the user's
468 <filename>~/.psqlrc
</filename> file).
474 <term><option>-
1</option></term>
475 <term><option>--single-transaction
</option></term>
478 When
<application>psql
</application> executes a script with the
479 <option>-f<
/> option, adding this option wraps
480 <command>BEGIN<
/>/
<command>COMMIT<
/> around the script to execute it
481 as a single transaction. This ensures that either all the commands
482 complete successfully, or no changes are applied.
486 If the script itself uses
<command>BEGIN<
/>,
<command>COMMIT<
/>,
487 or
<command>ROLLBACK<
/>, this option will not have the desired
489 Also, if the script contains any command that cannot be executed
490 inside a transaction block, specifying this option will cause that
491 command (and hence the whole transaction) to fail.
497 <term><option>-?<
/></term>
498 <term><option>--help<
/></term>
501 Show help about
<application>psql
</application> command line
511 <title>Exit Status
</title>
514 <application>psql
</application> returns
0 to the shell if it
515 finished normally,
1 if a fatal error of its own (out of memory,
516 file not found) occurs,
2 if the connection to the server went bad
517 and the session was not interactive, and
3 if an error occurred in a
518 script and the variable
<varname>ON_ERROR_STOP
</varname> was set.
526 <refsect2 id=
"R2-APP-PSQL-connecting">
527 <title>Connecting To A Database
</title>
530 <application>psql
</application> is a regular
531 <productname>PostgreSQL
</productname> client application. In order
532 to connect to a database you need to know the name of your target
533 database, the host name and port number of the server and what user
534 name you want to connect as.
<application>psql
</application> can be
535 told about those parameters via command line options, namely
536 <option>-d
</option>,
<option>-h
</option>,
<option>-p
</option>, and
537 <option>-U
</option> respectively. If an argument is found that does
538 not belong to any option it will be interpreted as the database name
539 (or the user name, if the database name is already given). Not all
540 these options are required; there are useful defaults. If you omit the host
541 name,
<application>psql<
/> will connect via a Unix-domain socket
542 to a server on the local host, or via TCP/IP to
<literal>localhost<
/> on
543 machines that don't have Unix-domain sockets. The default port number is
544 determined at compile time.
545 Since the database server uses the same default, you will not have
546 to specify the port in most cases. The default user name is your
547 Unix user name, as is the default database name. Note that you cannot
548 just connect to any database under any user name. Your database
549 administrator should have informed you about your access rights.
553 When the defaults aren't quite right, you can save yourself
554 some typing by setting the environment variables
555 <envar>PGDATABASE
</envar>,
<envar>PGHOST
</envar>,
556 <envar>PGPORT
</envar> and/or
<envar>PGUSER
</envar> to appropriate
557 values. (For additional environment variables, see
<xref
558 linkend=
"libpq-envars">.) It is also convenient to have a
559 <filename>~/.pgpass<
/> file to avoid regularly having to type in
560 passwords. See
<xref linkend=
"libpq-pgpass"> for more information.
564 An alternative way to specify connection parameters is in a
565 <parameter>conninfo
</parameter> string, which is used instead of a
566 database name. This mechanism give you very wide control over the
567 connection. For example:
569 $
<userinput>psql
"service=myservice sslmode=require"</userinput>
571 This way you can also use LDAP for connection parameter lookup as
572 described in
<xref linkend=
"libpq-ldap">.
573 See
<xref linkend=
"libpq-connect"> for more information on all the
574 available connection options.
578 If the connection could not be made for any reason (e.g., insufficient
579 privileges, server is not running on the targeted host, etc.),
580 <application>psql
</application> will return an error and terminate.
584 <refsect2 id=
"R2-APP-PSQL-4">
585 <title>Entering SQL Commands
</title>
588 In normal operation,
<application>psql
</application> provides a
589 prompt with the name of the database to which
590 <application>psql
</application> is currently connected, followed by
591 the string
<literal>=
></literal>. For example:
593 $
<userinput>psql testdb
</userinput>
595 Type
"help" for help.
602 At the prompt, the user can type in
<acronym>SQL
</acronym> commands.
603 Ordinarily, input lines are sent to the server when a
604 command-terminating semicolon is reached. An end of line does not
605 terminate a command. Thus commands can be spread over several lines for
606 clarity. If the command was sent and executed without error, the results
607 of the command are displayed on the screen.
611 Whenever a command is executed,
<application>psql
</application> also polls
612 for asynchronous notification events generated by
613 <xref linkend=
"SQL-LISTEN" endterm=
"SQL-LISTEN-title"> and
614 <xref linkend=
"SQL-NOTIFY" endterm=
"SQL-NOTIFY-title">.
619 <title>Meta-Commands
</title>
622 Anything you enter in
<application>psql
</application> that begins
623 with an unquoted backslash is a
<application>psql
</application>
624 meta-command that is processed by
<application>psql
</application>
625 itself. These commands help make
626 <application>psql
</application> more useful for administration or
627 scripting. Meta-commands are more commonly called slash or backslash
632 The format of a
<application>psql
</application> command is the backslash,
633 followed immediately by a command verb, then any arguments. The arguments
634 are separated from the command verb and each other by any number of
635 whitespace characters.
639 To include whitespace into an argument you can quote it with a
640 single quote. To include a single quote into such an argument,
641 use two single quotes. Anything contained in single quotes is
642 furthermore subject to C-like substitutions for
643 <literal>\n
</literal> (new line),
<literal>\t
</literal> (tab),
644 <literal>\
</literal><replaceable>digits
</replaceable> (octal), and
645 <literal>\x
</literal><replaceable>digits
</replaceable> (hexadecimal).
649 If an unquoted argument begins with a colon (
<literal>:
</literal>),
650 it is taken as a
<application>psql<
/> variable and the value of the
651 variable is used as the argument instead.
655 Arguments that are enclosed in backquotes (
<literal>`
</literal>)
656 are taken as a command line that is passed to the shell. The
657 output of the command (with any trailing newline removed) is taken
658 as the argument value. The above escape sequences also apply in
663 Some commands take an
<acronym>SQL
</acronym> identifier (such as a
664 table name) as argument. These arguments follow the syntax rules
665 of
<acronym>SQL
</acronym>: Unquoted letters are forced to
666 lowercase, while double quotes (
<literal>"</>) protect letters
667 from case conversion and allow incorporation of whitespace into
668 the identifier. Within double quotes, paired double quotes reduce
669 to a single double quote in the resulting name. For example,
670 <literal>FOO"BAR
"BAZ</> is interpreted as <literal>fooBARbaz</>,
671 and <literal>"A weird
"" name
"</> becomes <literal>A weird"
676 Parsing for arguments stops when another unquoted backslash occurs.
677 This is taken as the beginning of a new meta-command. The special
678 sequence
<literal>\\
</literal> (two backslashes) marks the end of
679 arguments and continues parsing
<acronym>SQL
</acronym> commands, if
680 any. That way
<acronym>SQL
</acronym> and
681 <application>psql
</application> commands can be freely mixed on a
682 line. But in any case, the arguments of a meta-command cannot
683 continue beyond the end of the line.
687 The following meta-commands are defined:
691 <term><literal>\a
</literal></term>
694 If the current table output format is unaligned, it is switched to aligned.
695 If it is not unaligned, it is set to unaligned. This command is
696 kept for backwards compatibility. See
<command>\pset
</command> for a
697 more general solution.
703 <term><literal>\cd [
<replaceable>directory
</replaceable> ]
</literal></term>
706 Changes the current working directory to
707 <replaceable>directory
</replaceable>. Without argument, changes
708 to the current user's home directory.
713 To print your current working directory, use
<literal>\!pwd
</literal>.
720 <term><literal>\C [
<replaceable class=
"parameter">title
</replaceable> ]
</literal></term>
723 Sets the title of any tables being printed as the result of a
724 query or unset any such title. This command is equivalent to
725 <literal>\pset title
<replaceable
726 class=
"parameter">title
</replaceable></literal>. (The name of
727 this command derives from
<quote>caption
</quote>, as it was
728 previously only used to set the caption in an
729 <acronym>HTML
</acronym> table.)
735 <term><literal>\connect
</literal> (or
<literal>\c
</literal>)
<literal>[
<replaceable class=
"parameter">dbname
</replaceable> [
<replaceable class=
"parameter">username
</replaceable> ] [
<replaceable class=
"parameter">host
</replaceable> ] [
<replaceable class=
"parameter">port
</replaceable> ] ]
</literal></term>
738 Establishes a new connection to a
<productname>PostgreSQL<
/>
739 server. If the new connection is successfully made, the
740 previous connection is closed. If any of
<replaceable
741 class=
"parameter">dbname
</replaceable>,
<replaceable
742 class=
"parameter">username
</replaceable>,
<replaceable
743 class=
"parameter">host
</replaceable> or
<replaceable
744 class=
"parameter">port
</replaceable> are omitted or specified
745 as
<literal>-
</literal>, the value of that parameter from the
746 previous connection is used. If there is no previous
747 connection, the
<application>libpq
</application> default for
748 the parameter's value is used.
752 If the connection attempt failed (wrong user name, access
753 denied, etc.), the previous connection will only be kept if
754 <application>psql
</application> is in interactive mode. When
755 executing a non-interactive script, processing will
756 immediately stop with an error. This distinction was chosen as
757 a user convenience against typos on the one hand, and a safety
758 mechanism that scripts are not accidentally acting on the
759 wrong database on the other hand.
765 <term><literal>\copy {
<replaceable class=
"parameter">table
</replaceable> [ (
<replaceable class=
"parameter">column_list
</replaceable> ) ] | (
<replaceable class=
"parameter">query
</replaceable> ) }
766 {
<literal>from
</literal> |
<literal>to
</literal> }
767 {
<replaceable class=
"parameter">filename
</replaceable> | stdin | stdout | pstdin | pstdout }
771 [ delimiter [ as ] '
<replaceable class=
"parameter">character
</replaceable>' ]
772 [ null [ as ] '
<replaceable class=
"parameter">string
</replaceable>' ]
775 [ quote [ as ] '
<replaceable class=
"parameter">character
</replaceable>' ]
776 [ escape [ as ] '
<replaceable class=
"parameter">character
</replaceable>' ]
777 [ force quote
<replaceable class=
"parameter">column_list
</replaceable> ]
778 [ force not null
<replaceable class=
"parameter">column_list
</replaceable> ] ]
</literal>
783 Performs a frontend (client) copy. This is an operation that
784 runs an
<acronym>SQL
</acronym> <xref linkend=
"SQL-COPY"
785 endterm=
"SQL-COPY-title"> command, but instead of the server
786 reading or writing the specified file,
787 <application>psql
</application> reads or writes the file and
788 routes the data between the server and the local file system.
789 This means that file accessibility and privileges are those of
790 the local user, not the server, and no SQL superuser
791 privileges are required.
795 The syntax of the command is similar to that of the
796 <acronym>SQL
</acronym> <xref linkend=
"sql-copy"
797 endterm=
"sql-copy-title"> command. Note that, because of this,
798 special parsing rules apply to the
<command>\copy
</command>
799 command. In particular, the variable substitution rules and
800 backslash escapes do not apply.
804 <literal>\copy ... from stdin | to stdout
</literal>
805 reads/writes based on the command input and output respectively.
806 All rows are read from the same source that issued the command,
807 continuing until
<literal>\.
</literal> is read or the stream
808 reaches
<acronym>EOF<
/>. Output is sent to the same place as
809 command output. To read/write from
810 <application>psql
</application>'s standard input or output, use
811 <literal>pstdin<
/> or
<literal>pstdout<
/>. This option is useful
812 for populating tables in-line within a SQL script file.
817 This operation is not as efficient as the
<acronym>SQL
</acronym>
818 <command>COPY
</command> command because all data must pass
819 through the client/server connection. For large
820 amounts of data the
<acronym>SQL
</acronym> command might be preferable.
828 <term><literal>\copyright
</literal></term>
831 Shows the copyright and distribution terms of
832 <productname>PostgreSQL
</productname>.
838 <term><literal>\d[S+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
842 For each relation (table, view, index, or sequence) matching the
843 <replaceable class=
"parameter">pattern
</replaceable>, show all
844 columns, their types, the tablespace (if not the default) and any special
845 attributes such as
<literal>NOT NULL
</literal> or defaults, if
846 any. Associated indexes, constraints, rules, and triggers are
847 also shown, as is the view definition if the relation is a view.
848 (
<quote>Matching the pattern<
/> is defined below.)
852 The command form
<literal>\d+
</literal> is identical, except that
853 more information is displayed: any comments associated with the
854 columns of the table are shown, as is the presence of OIDs in the
859 By default, only user-created objects are shown; supply a
860 pattern or the
<literal>S
</literal> modifier to include system
866 If
<command>\d
</command> is used without a
867 <replaceable class=
"parameter">pattern
</replaceable> argument, it is
868 equivalent to
<command>\dtvs
</command> which will show a list of
869 all tables, views, and sequences. This is purely a convenience
877 <term><literal>\da[S] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
881 Lists all available aggregate functions, together with their
882 return type and the data types they operate on. If
<replaceable
883 class=
"parameter">pattern
</replaceable>
884 is specified, only aggregates whose names match the pattern are shown.
885 By default, only user-created objects are shown; supply a
886 pattern or the
<literal>S
</literal> modifier to include system
894 <term><literal>\db[+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
898 Lists all available tablespaces. If
<replaceable
899 class=
"parameter">pattern
</replaceable>
900 is specified, only tablespaces whose names match the pattern are shown.
901 If
<literal>+
</literal> is appended to the command name, each object
902 is listed with its associated permissions.
909 <term><literal>\dc[S] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
912 Lists all available conversions between character-set encodings.
913 If
<replaceable class=
"parameter">pattern
</replaceable>
914 is specified, only conversions whose names match the pattern are
916 By default, only user-created objects are shown; supply a
917 pattern or the
<literal>S
</literal> modifier to include system
925 <term><literal>\dC [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
928 Lists all available type casts.
929 If
<replaceable class=
"parameter">pattern
</replaceable>
930 is specified, only casts whose source or target types match the
938 <term><literal>\dd[S] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
941 Shows the descriptions of objects matching the
<replaceable
942 class=
"parameter">pattern
</replaceable>, or of all visible objects if
943 no argument is given. But in either case, only objects that have
944 a description are listed.
945 By default, only user-created objects are shown; supply a
946 pattern or the
<literal>S
</literal> modifier to include system
948 <quote>Object
</quote> covers aggregates, functions, operators,
949 types, relations (tables, views, indexes, sequences), large
950 objects, rules, and triggers. For example:
952 =
> <userinput>\dd version
</userinput>
954 Schema | Name | Object | Description
955 ------------+---------+----------+---------------------------
956 pg_catalog | version | function | PostgreSQL version string
962 Descriptions for objects can be created with the
<xref
963 linkend=
"sql-comment" endterm=
"sql-comment-title">
964 <acronym>SQL
</acronym> command.
971 <term><literal>\dD[S] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
974 Lists all available domains. If
<replaceable
975 class=
"parameter">pattern
</replaceable>
976 is specified, only matching domains are shown.
977 By default, only user-created objects are shown; supply a
978 pattern or the
<literal>S
</literal> modifier to include system
986 <term><literal>\des[+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
989 Lists all foreign servers (mnemonic:
<quote>external
991 If
<replaceable class=
"parameter">pattern
</replaceable> is
992 specified, only those servers whose name matches the pattern
993 are listed. If the form
<literal>\des+
</literal> is used, a
994 full desription of each server is shown, including the
995 server's ACL, type, version, and options.
1002 <term><literal>\deu[+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1005 Lists all user mappings (mnemonic:
<quote>external
1007 If
<replaceable class=
"parameter">pattern
</replaceable> is
1008 specified, only those mappings whose user names match the
1009 pattern are listed. If the form
<literal>\deu+
</literal> is
1010 used, additional information about each mapping is shown.
1015 <literal>\deu+
</literal> might also display the user name and
1016 password of the remote user, so care should be taken not to
1025 <term><literal>\dew[+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1028 Lists all foreign-data wrappers (mnemonic:
<quote>external
1030 If
<replaceable class=
"parameter">pattern
</replaceable> is
1031 specified, only those foreign-data wrappers whose name matches
1032 the pattern are listed. If the form
<literal>\dew+
</literal>
1033 is used, the ACL and options of the foreign-data wrapper are
1041 <term><literal>\df[antwS+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1045 Lists available functions, together with their arguments,
1046 return types, and their function types: 'agg' (aggregate),
1047 'normal', 'trigger', and 'window'. To display only functions
1048 of a specific type, use the corresponding letters
<literal>a<
/>,
1049 <literal>n<
/>,
<literal>t<
/>, or
<literal>w<
/>. If
<replaceable
1050 class=
"parameter">pattern
</replaceable> is specified, only
1051 functions whose names match the pattern are shown. If the
1052 form
<literal>\df+
</literal> is used, additional information
1053 about each function, including volatility, language, source
1054 code and description, is shown. By default, only user-created
1055 objects are shown; supply a pattern or the
<literal>S
</literal>
1056 modifier to include system objects.
1061 To look up functions taking arguments or returning values of a specific
1062 type, use your pager's search capability to scroll through the
<literal>\df<
/>
1071 <term><literal>\dF[+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1074 Lists available text search configurations.
1075 If
<replaceable class=
"parameter">pattern
</replaceable> is specified,
1076 only configurations whose names match the pattern are shown.
1077 If the form
<literal>\dF+
</literal> is used, a full description of
1078 each configuration is shown, including the underlying text search
1079 parser and the dictionary list for each parser token type.
1085 <term><literal>\dFd[+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1088 Lists available text search dictionaries.
1089 If
<replaceable class=
"parameter">pattern
</replaceable> is specified,
1090 only dictionaries whose names match the pattern are shown.
1091 If the form
<literal>\dFd+
</literal> is used, additional information
1092 is shown about each selected dictionary, including the underlying
1093 text search template and the option values.
1099 <term><literal>\dFp[+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1102 Lists available text search parsers.
1103 If
<replaceable class=
"parameter">pattern
</replaceable> is specified,
1104 only parsers whose names match the pattern are shown.
1105 If the form
<literal>\dFp+
</literal> is used, a full description of
1106 each parser is shown, including the underlying functions and the
1107 list of recognized token types.
1113 <term><literal>\dFt[+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1116 Lists available text search templates.
1117 If
<replaceable class=
"parameter">pattern
</replaceable> is specified,
1118 only templates whose names match the pattern are shown.
1119 If the form
<literal>\dFt+
</literal> is used, additional information
1120 is shown about each template, including the underlying function names.
1127 <term><literal>\dg [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1130 Lists all database roles. If
<replaceable
1131 class=
"parameter">pattern
</replaceable> is specified, only
1132 those roles whose names match the pattern are listed.
1133 (This command is now effectively the same as
<literal>\du<
/>.)
1140 <term><literal>\di[S+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1141 <term><literal>\ds[S+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1142 <term><literal>\dt[S+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1143 <term><literal>\dv[S+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1147 In this group of commands, the letters
1148 <literal>i
</literal>,
<literal>s
</literal>,
1149 <literal>t
</literal>, and
<literal>v
</literal>
1150 stand for index, sequence, table, and view, respectively.
1151 You can specify any or all of
1152 these letters, in any order, to obtain a listing of all the
1153 matching objects. For example,
<literal>\dit<
/> lists indexes
1154 and tables. If
<literal>+
</literal> is
1155 appended to the command name, each object is listed with its
1156 physical size on disk and its associated description, if any.
1157 By default, only user-created objects are shown; supply a
1158 pattern or the
<literal>S
</literal> modifier to include system
1163 If
<replaceable class=
"parameter">pattern
</replaceable> is
1164 specified, only objects whose names match the pattern are listed.
1171 <term><literal>\dl
</literal></term>
1174 This is an alias for
<command>\lo_list
</command>, which shows a
1175 list of large objects.
1182 <term><literal>\dn[+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1186 Lists available schemas (namespaces). If
<replaceable
1187 class=
"parameter">pattern
</replaceable> (a regular expression)
1188 is specified, only schemas whose names match the pattern are listed.
1189 Non-local temporary schemas are suppressed. If
<literal>+
</literal>
1190 is appended to the command name, each object is listed with its associated
1191 permissions and description, if any.
1198 <term><literal>\do[S] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1201 Lists available operators with their operand and return types.
1202 If
<replaceable class=
"parameter">pattern
</replaceable> is
1203 specified, only operators whose names match the pattern are listed.
1204 By default, only user-created objects are shown; supply a
1205 pattern or the
<literal>S
</literal> modifier to include system
1213 <term><literal>\dp [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1216 Lists available tables, views and sequences with their
1217 associated access privileges.
1218 If
<replaceable class=
"parameter">pattern
</replaceable> is
1219 specified, only tables, views and sequences whose names match the pattern are listed.
1223 The
<xref linkend=
"sql-grant" endterm=
"sql-grant-title"> and
1224 <xref linkend=
"sql-revoke" endterm=
"sql-revoke-title">
1225 commands are used to set access privileges.
1232 <term><literal>\dT[S+] [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1235 Lists available data types.
1236 If
<replaceable class=
"parameter">pattern
</replaceable> is
1237 specified, only types whose names match the pattern are listed.
1238 If
<literal>+
</literal> is appended to the command name, each type is
1239 listed with its internal name and size, as well as its allowed values
1240 if it is an
<type>enum<
/> type.
1241 By default, only user-created objects are shown; supply a
1242 pattern or the
<literal>S
</literal> modifier to include system
1250 <term><literal>\du [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
1253 Lists all database roles. If
<replaceable
1254 class=
"parameter">pattern
</replaceable> is specified, only
1255 those roles whose names match the pattern are listed.
1262 <term><literal>\edit
</literal> (or
<literal>\e
</literal>)
<literal><optional> <replaceable class=
"parameter">filename
</replaceable> </optional></literal></term>
1266 If
<replaceable class=
"parameter">filename
</replaceable> is
1267 specified, the file is edited; after the editor exits, its
1268 content is copied back to the query buffer. If no argument is
1269 given, the current query buffer is copied to a temporary file
1270 which is then edited in the same fashion.
1274 The new query buffer is then re-parsed according to the normal
1275 rules of
<application>psql
</application>, where the whole buffer
1276 is treated as a single line. (Thus you cannot make scripts this
1277 way. Use
<command>\i
</command> for that.) This means also that
1278 if the query ends with (or rather contains) a semicolon, it is
1279 immediately executed. In other cases it will merely wait in the
1285 <application>psql
</application> searches the environment
1286 variables
<envar>PSQL_EDITOR
</envar>,
<envar>EDITOR
</envar>, and
1287 <envar>VISUAL
</envar> (in that order) for an editor to use. If
1288 all of them are unset,
<filename>vi
</filename> is used on Unix
1289 systems,
<filename>notepad.exe
</filename> on Windows systems.
1297 <term><literal>\ef
<optional> <replaceable class=
"parameter">function_description
</replaceable> </optional></literal></term>
1301 This command fetches and edits the definition of the named function,
1302 in the form of a
<command>CREATE OR REPLACE FUNCTION<
/> command.
1303 Editing is done in the same way as for
<literal>\e<
/>.
1304 After the editor exits, the updated command waits in the query buffer;
1305 type semicolon or
<literal>\g<
/> to send it, or
<literal>\r<
/>
1310 The target function can be specified by name alone, or by name
1311 and arguments, for example
<literal>foo(integer, text)<
/>.
1312 The argument types must be given if there is more
1313 than one function of the same name.
1317 If no function is specified, a blank
<command>CREATE FUNCTION<
/>
1318 template is presented for editing.
1325 <term><literal>\echo
<replaceable class=
"parameter">text
</replaceable> [ ... ]
</literal></term>
1328 Prints the arguments to the standard output, separated by one
1329 space and followed by a newline. This can be useful to
1330 intersperse information in the output of scripts. For example:
1332 =
> <userinput>\echo `date`
</userinput>
1333 Tue Oct
26 21:
40:
57 CEST
1999
1335 If the first argument is an unquoted
<literal>-n
</literal> the trailing
1336 newline is not written.
1341 If you use the
<command>\o
</command> command to redirect your
1342 query output you might wish to use
<command>\qecho
</command>
1343 instead of this command.
1351 <term><literal>\encoding [
<replaceable class=
"parameter">encoding
</replaceable> ]
</literal></term>
1355 Sets the client character set encoding. Without an argument, this command
1356 shows the current encoding.
1363 <term><literal>\f [
<replaceable class=
"parameter">string
</replaceable> ]
</literal></term>
1367 Sets the field separator for unaligned query output. The default
1368 is the vertical bar (
<literal>|
</literal>). See also
1369 <command>\pset
</command> for a generic way of setting output
1377 <term><literal>\g
</literal> [ {
<replaceable class=
"parameter">filename
</replaceable> |
<literal>|
</literal><replaceable class=
"parameter">command
</replaceable> } ]
</term>
1381 Sends the current query input buffer to the server and
1382 optionally stores the query's output in
<replaceable
1383 class=
"parameter">filename
</replaceable> or pipes the output
1384 into a separate Unix shell executing
<replaceable
1385 class=
"parameter">command
</replaceable>. A bare
1386 <literal>\g
</literal> is virtually equivalent to a semicolon. A
1387 <literal>\g
</literal> with argument is a
<quote>one-shot
</quote>
1388 alternative to the
<command>\o
</command> command.
1394 <term><literal>\help
</literal> (or
<literal>\h
</literal>)
<literal>[
<replaceable class=
"parameter">command
</replaceable> ]
</literal></term>
1397 Gives syntax help on the specified
<acronym>SQL
</acronym>
1398 command. If
<replaceable class=
"parameter">command
</replaceable>
1399 is not specified, then
<application>psql
</application> will list
1400 all the commands for which syntax help is available. If
1401 <replaceable class=
"parameter">command
</replaceable> is an
1402 asterisk (
<literal>*
</literal>), then syntax help on all
1403 <acronym>SQL
</acronym> commands is shown.
1408 To simplify typing, commands that consists of several words do
1409 not have to be quoted. Thus it is fine to type
<userinput>\help
1410 alter table
</userinput>.
1418 <term><literal>\H
</literal></term>
1421 Turns on
<acronym>HTML
</acronym> query output format. If the
1422 <acronym>HTML
</acronym> format is already on, it is switched
1423 back to the default aligned text format. This command is for
1424 compatibility and convenience, but see
<command>\pset
</command>
1425 about setting other output options.
1432 <term><literal>\i
<replaceable class=
"parameter">filename
</replaceable></literal></term>
1435 Reads input from the file
<replaceable
1436 class=
"parameter">filename
</replaceable> and executes it as
1437 though it had been typed on the keyboard.
1441 If you want to see the lines on the screen as they are read you
1442 must set the variable
<varname>ECHO
</varname> to
1443 <literal>all
</literal>.
1451 <term><literal>\l
</literal> (or
<literal>\list
</literal>)
</term>
1452 <term><literal>\l+
</literal> (or
<literal>\list+
</literal>)
</term>
1455 List the names, owners, character set encodings, and access privileges
1456 of all the databases in the server.
1457 If
<literal>+
</literal> is appended to the command name, database
1458 sizes, default tablespaces, and descriptions are also displayed.
1459 (Size information is only available for databases that the current
1460 user can connect to.)
1467 <term><literal>\lo_export
<replaceable class=
"parameter">loid
</replaceable> <replaceable class=
"parameter">filename
</replaceable></literal></term>
1471 Reads the large object with
<acronym>OID
</acronym> <replaceable
1472 class=
"parameter">loid
</replaceable> from the database and
1473 writes it to
<replaceable
1474 class=
"parameter">filename
</replaceable>. Note that this is
1475 subtly different from the server function
1476 <function>lo_export
</function>, which acts with the permissions
1477 of the user that the database server runs as and on the server's
1482 Use
<command>\lo_list
</command> to find out the large object's
1483 <acronym>OID
</acronym>.
1491 <term><literal>\lo_import
<replaceable class=
"parameter">filename
</replaceable> [
<replaceable class=
"parameter">comment
</replaceable> ]
</literal></term>
1495 Stores the file into a
<productname>PostgreSQL
</productname>
1496 large object. Optionally, it associates the given
1497 comment with the object. Example:
1499 foo=
> <userinput>\lo_import '/home/peter/pictures/photo.xcf' 'a picture of me'
</userinput>
1502 The response indicates that the large object received object
1503 ID
152801, which can be used to access the newly-created large
1504 object in the future. For the sake of readability, it is
1505 recommended to always associate a human-readable comment with
1506 every object. Both OIDs and comments can be viewed with the
1507 <command>\lo_list
</command> command.
1511 Note that this command is subtly different from the server-side
1512 <function>lo_import
</function> because it acts as the local user
1513 on the local file system, rather than the server's user and file
1520 <term><literal>\lo_list
</literal></term>
1523 Shows a list of all
<productname>PostgreSQL
</productname>
1524 large objects currently stored in the database,
1525 along with any comments provided for them.
1531 <term><literal>\lo_unlink
<replaceable class=
"parameter">loid
</replaceable></literal></term>
1535 Deletes the large object with
<acronym>OID
</acronym>
1536 <replaceable class=
"parameter">loid
</replaceable> from the
1542 Use
<command>\lo_list
</command> to find out the large object's
1543 <acronym>OID
</acronym>.
1551 <term><literal>\o
</literal> [ {
<replaceable class=
"parameter">filename
</replaceable> |
<literal>|
</literal><replaceable class=
"parameter">command
</replaceable>} ]
</term>
1555 Saves future query results to the file
<replaceable
1556 class=
"parameter">filename
</replaceable> or pipes future results
1557 into a separate Unix shell to execute
<replaceable
1558 class=
"parameter">command
</replaceable>. If no arguments are
1559 specified, the query output will be reset to the standard output.
1563 <quote>Query results
</quote> includes all tables, command
1564 responses, and notices obtained from the database server, as
1565 well as output of various backslash commands that query the
1566 database (such as
<command>\d
</command>), but not error
1572 To intersperse text output in between query results, use
1573 <command>\qecho
</command>.
1581 <term><literal>\p
</literal></term>
1584 Print the current query buffer to the standard output.
1590 <term><literal>\password [
<replaceable class=
"parameter">username
</replaceable> ]
</literal></term>
1593 Changes the password of the specified user (by default, the current
1594 user). This command prompts for the new password, encrypts it, and
1595 sends it to the server as an
<command>ALTER ROLE<
/> command. This
1596 makes sure that the new password does not appear in cleartext in the
1597 command history, the server log, or elsewhere.
1603 <term><literal>\prompt [
<replaceable class=
"parameter">text
</replaceable> ]
<replaceable class=
"parameter">name
</replaceable></literal></term>
1606 Prompts the user to set variable
<replaceable
1607 class=
"parameter">name<
/>. An optional prompt,
<replaceable
1608 class=
"parameter">text<
/>, can be specified. (For multi-word
1609 prompts, use single-quotes.)
1613 By default,
<literal>\prompt<
/> uses the terminal for input and
1614 output. However, if the
<option>-f<
/> command line switch is
1615 used,
<literal>\prompt<
/> uses standard input and standard output.
1621 <term><literal>\pset
<replaceable class=
"parameter">parameter
</replaceable> [
<replaceable class=
"parameter">value
</replaceable> ]
</literal></term>
1625 This command sets options affecting the output of query result
1626 tables.
<replaceable class=
"parameter">parameter
</replaceable>
1627 describes which option is to be set. The semantics of
1628 <replaceable class=
"parameter">value
</replaceable> depend
1633 Adjustable printing options are:
1636 <term><literal>format
</literal></term>
1639 Sets the output format to one of
<literal>unaligned
</literal>,
1640 <literal>aligned
</literal>,
<literal>wrapped
</literal>,
1641 <literal>html
</literal>,
1642 <literal>latex
</literal>, or
<literal>troff-ms
</literal>.
1643 Unique abbreviations are allowed. (That would mean one letter
1648 <quote>Unaligned
</quote> writes all columns of a row on a
1649 line, separated by the currently active field separator. This
1650 is intended to create output that might be intended to be read
1651 in by other programs (tab-separated, comma-separated).
1652 <quote>Aligned
</quote> mode is the standard, human-readable,
1653 nicely formatted text output that is default.
1657 <quote>Wrapped
</quote> is like
<literal>aligned<
/> but wraps
1658 output to the specified width. If
<literal>\pset columns<
/> is
1659 zero (the default),
<literal>wrapped<
/> mode only affects screen
1660 output and wrapped width is controlled by the environment
1661 variable
<envar>COLUMNS<
/> or the detected screen width. If
1662 <literal>\pset columns<
/> is set to a non-zero value, all output
1663 is wrapped, including file and pipe output.
1667 The
<quote><acronym>HTML
</acronym></quote> and
1668 <quote>LaTeX
</quote> modes put out tables that are intended to
1669 be included in documents using the respective mark-up
1670 language. They are not complete documents! (This might not be
1671 so dramatic in
<acronym>HTML
</acronym>, but in LaTeX you must
1672 have a complete document wrapper.)
1678 <term><literal>columns
</literal></term>
1681 Controls the target width for the
<literal>wrapped<
/> format,
1682 and width for determining if wide output requires the pager.
1683 Zero (the default) causes the
<literal>wrapped<
/> format to
1684 affect only screen output.
1690 <term><literal>border
</literal></term>
1693 The second argument must be a number. In general, the higher
1694 the number the more borders and lines the tables will have,
1695 but this depends on the particular format. In
1696 <acronym>HTML
</acronym> mode, this will translate directly
1697 into the
<literal>border=...
</literal> attribute, in the
1698 others only values
0 (no border),
1 (internal dividing lines),
1699 and
2 (table frame) make sense.
1705 <term><literal>expanded
</literal> (or
<literal>x
</literal>)
</term>
1708 You can specify an optional second argument, if it is provided it
1709 may be either
<literal>on
</literal> or
<literal>off
</literal>
1710 which will enable or disable expanded mode. If the second
1711 argument is not provided then we will toggle between regular and
1712 expanded format. When expanded format is enabled, query results
1713 are displayed in two columns, with the column name on the left and
1714 the data on the right. This mode is useful if the data wouldn't fit
1715 on the screen in the normal
<quote>horizontal
</quote> mode.
1719 Expanded mode is supported by all four output formats.
1725 <term><literal>null
</literal></term>
1728 The second argument is a string that should be printed
1729 whenever a column is null. The default is not to print
1730 anything, which can easily be mistaken for, say, an empty
1731 string. Thus, one might choose to write
<literal>\pset null
1738 <term><literal>fieldsep
</literal></term>
1741 Specifies the field separator to be used in unaligned output
1742 mode. That way one can create, for example, tab- or
1743 comma-separated output, which other programs might prefer. To
1744 set a tab as field separator, type
<literal>\pset fieldsep
1745 '\t'
</literal>. The default field separator is
1746 <literal>'|'
</literal> (a vertical bar).
1752 <term><literal>footer
</literal></term>
1755 You can specify an optional second argument, if it is provided it
1756 may be either
<literal>on
</literal> or
<literal>off
</literal>
1757 which will enable or disable display of the default footer
1758 <literal>(x rows)
</literal>. If the second argument is not
1759 provided then we will toggle between on and off.
1765 <term><literal>numericlocale
</literal></term>
1768 You can specify an optional second argument, if it is provided it
1769 may be either
<literal>on
</literal> or
<literal>off
</literal>
1770 which will enable or disable display of a locale-aware character
1771 to separate groups of digits to the left of the decimal marker. If
1772 the second argument is not provided then we will toggle between
1779 <term><literal>recordsep
</literal></term>
1782 Specifies the record (line) separator to use in unaligned
1783 output mode. The default is a newline character.
1789 <term><literal>tuples_only
</literal> (or
<literal>t
</literal>)
</term>
1792 You can specify an optional second argument, if it is provided it
1793 may be either
<literal>on
</literal> or
<literal>off
</literal>
1794 which will enable or disable the tuples only mode. If the
1795 second argument is not provided then we will toggle between tuples
1796 only and full display. Full display shows extra information such
1797 as column headers, titles, and various footers. In tuples only
1798 mode, only actual table data is shown.
1804 <term><literal>title [
<replaceable class=
"parameter">text
</replaceable> ]
</literal></term>
1807 Sets the table title for any subsequently printed tables. This
1808 can be used to give your output descriptive tags. If no
1809 argument is given, the title is unset.
1815 <term><literal>tableattr
</literal> (or
<literal>T
</literal>)
<literal>[
<replaceable class=
"parameter">text
</replaceable> ]
</literal></term>
1818 Allows you to specify any attributes to be placed inside the
1819 <acronym>HTML
</acronym> <sgmltag>table
</sgmltag> tag. This
1820 could for example be
<literal>cellpadding
</literal> or
1821 <literal>bgcolor
</literal>. Note that you probably don't want
1822 to specify
<literal>border
</literal> here, as that is already
1823 taken care of by
<literal>\pset border
</literal>.
1830 <term><literal>pager
</literal></term>
1833 Controls use of a pager for query and
<application>psql<
/>
1834 help output. If the environment variable
<envar>PAGER
</envar>
1835 is set, the output is piped to the specified program.
1836 Otherwise a platform-dependent default (such as
1837 <filename>more
</filename>) is used.
1841 When the pager is
<literal>off<
/>, the pager is not used. When the pager
1842 is
<literal>on<
/>, the pager is used only when appropriate, i.e. the
1843 output is to a terminal and will not fit on the screen.
1844 <literal>\pset pager<
/> turns the pager on and off. Pager can
1845 also be set to
<literal>always<
/>, which causes the pager to be
1854 Illustrations on how these different formats look can be seen in
1855 the
<xref linkend=
"APP-PSQL-examples"
1856 endterm=
"APP-PSQL-examples-title"> section.
1861 There are various shortcut commands for
<command>\pset
</command>. See
1862 <command>\a
</command>,
<command>\C
</command>,
<command>\H
</command>,
1863 <command>\t
</command>,
<command>\T
</command>, and
<command>\x
</command>.
1869 It is an error to call
<command>\pset
</command> without
1870 arguments. In the future this call might show the current status
1871 of all printing options.
1880 <term><literal>\q
</literal></term>
1883 Quits the
<application>psql
</application> program.
1890 <term><literal>\qecho
<replaceable class=
"parameter">text
</replaceable> [ ... ]
</literal></term>
1893 This command is identical to
<command>\echo
</command> except
1894 that the output will be written to the query output channel, as
1895 set by
<command>\o
</command>.
1902 <term><literal>\r
</literal></term>
1905 Resets (clears) the query buffer.
1912 <term><literal>\s [
<replaceable class=
"parameter">filename
</replaceable> ]
</literal></term>
1915 Print or save the command line history to
<replaceable
1916 class=
"parameter">filename
</replaceable>. If
<replaceable
1917 class=
"parameter">filename
</replaceable> is omitted, the history
1918 is written to the standard output. This option is only available
1919 if
<application>psql
</application> is configured to use the
1920 <acronym>GNU
</acronym> <application>Readline
</application> library.
1927 <term><literal>\set [
<replaceable class=
"parameter">name
</replaceable> [
<replaceable class=
"parameter">value
</replaceable> [ ... ] ] ]
</literal></term>
1931 Sets the internal variable
<replaceable
1932 class=
"parameter">name
</replaceable> to
<replaceable
1933 class=
"parameter">value
</replaceable> or, if more than one value
1934 is given, to the concatenation of all of them. If no second
1935 argument is given, the variable is just set with no value. To
1936 unset a variable, use the
<command>\unset
</command> command.
1940 Valid variable names can contain characters, digits, and
1941 underscores. See the section
<xref
1942 linkend=
"APP-PSQL-variables"
1943 endterm=
"APP-PSQL-variables-title"> below for details.
1944 Variable names are case-sensitive.
1948 Although you are welcome to set any variable to anything you
1949 want,
<application>psql
</application> treats several variables
1950 as special. They are documented in the section about variables.
1955 This command is totally separate from the
<acronym>SQL
</acronym>
1956 command
<xref linkend=
"SQL-SET" endterm=
"SQL-SET-title">.
1964 <term><literal>\t
</literal></term>
1967 Toggles the display of output column name headings and row count
1968 footer. This command is equivalent to
<literal>\pset
1969 tuples_only
</literal> and is provided for convenience.
1976 <term><literal>\T
<replaceable class=
"parameter">table_options
</replaceable></literal></term>
1979 Allows you to specify attributes to be placed within the
1980 <sgmltag>table
</sgmltag> tag in
<acronym>HTML
</acronym> tabular
1981 output mode. This command is equivalent to
<literal>\pset
1982 tableattr
<replaceable
1983 class=
"parameter">table_options
</replaceable></literal>.
1990 <term><literal>\timing [
<replaceable class=
"parameter">on
</replaceable> |
<replaceable class=
"parameter">off
</replaceable> ]
</literal></term>
1993 Without parameter, toggles a display of how long each SQL statement
1994 takes, in milliseconds. With parameter, sets same.
2001 <term><literal>\w
</literal> {
<replaceable class=
"parameter">filename
</replaceable> |
<replaceable class=
"parameter">|command
</replaceable>}
</term>
2004 Outputs the current query buffer to the file
<replaceable
2005 class=
"parameter">filename
</replaceable> or pipes it to the Unix
2006 command
<replaceable class=
"parameter">command
</replaceable>.
2013 <term><literal>\x
</literal></term>
2016 Toggles expanded table formatting mode. As such it is equivalent to
2017 <literal>\pset expanded
</literal>.
2024 <term><literal>\z [
<replaceable class=
"parameter">pattern
</replaceable> ]
</literal></term>
2027 Produces a list of all available tables, views and sequences with their
2028 associated access privileges.
2029 If a
<replaceable class=
"parameter">pattern
</replaceable> is
2030 specified, only tables,views and sequences whose names match the pattern are listed.
2034 The
<xref linkend=
"sql-grant" endterm=
"sql-grant-title"> and
2035 <xref linkend=
"sql-revoke" endterm=
"sql-revoke-title">
2036 commands are used to set access privileges.
2040 This is an alias for
<command>\dp
</command> (
<quote>display
2041 privileges
</quote>).
2048 <term><literal>\! [
<replaceable class=
"parameter">command
</replaceable> ]
</literal></term>
2051 Escapes to a separate Unix shell or executes the Unix command
2052 <replaceable class=
"parameter">command
</replaceable>. The
2053 arguments are not further interpreted, the shell will see them
2061 <term><literal>\?
</literal></term>
2064 Shows help information about the backslash commands.
2072 <refsect3 id=
"APP-PSQL-patterns">
2073 <title id=
"APP-PSQL-patterns-title">Patterns
</title>
2076 <primary>patterns
</primary>
2077 <secondary>in psql and pg_dump
</secondary>
2081 The various
<literal>\d<
/> commands accept a
<replaceable
2082 class=
"parameter">pattern
</replaceable> parameter to specify the
2083 object name(s) to be displayed. In the simplest case, a pattern
2084 is just the exact name of the object. The characters within a
2085 pattern are normally folded to lower case, just as in SQL names;
2086 for example,
<literal>\dt FOO<
/> will display the table named
2087 <literal>foo<
/>. As in SQL names, placing double quotes around
2088 a pattern stops folding to lower case. Should you need to include
2089 an actual double quote character in a pattern, write it as a pair
2090 of double quotes within a double-quote sequence; again this is in
2091 accord with the rules for SQL quoted identifiers. For example,
2092 <literal>\dt
"FOO""BAR"<
/> will display the table named
2093 <literal>FOO
"BAR</> (not <literal>foo"bar<
/>). Unlike the normal
2094 rules for SQL names, you can put double quotes around just part
2095 of a pattern, for instance
<literal>\dt FOO
"FOO"BAR<
/> will display
2096 the table named
<literal>fooFOObar<
/>.
2100 Within a pattern,
<literal>*<
/> matches any sequence of characters
2101 (including no characters) and
<literal>?<
/> matches any single character.
2102 (This notation is comparable to Unix shell file name patterns.)
2103 For example,
<literal>\dt int*<
/> displays all tables whose names
2104 begin with
<literal>int<
/>. But within double quotes,
<literal>*<
/>
2105 and
<literal>?<
/> lose these special meanings and are just matched
2110 A pattern that contains a dot (
<literal>.<
/>) is interpreted as a schema
2111 name pattern followed by an object name pattern. For example,
2112 <literal>\dt foo*.*bar*<
/> displays all tables whose table name
2113 includes
<literal>bar<
/> that are in schemas whose schema name
2114 starts with
<literal>foo<
/>. When no dot appears, then the pattern
2115 matches only objects that are visible in the current schema search path.
2116 Again, a dot within double quotes loses its special meaning and is matched
2121 Advanced users can use regular-expression notations such as character
2122 classes, for example
<literal>[
0-
9]<
/> to match any digit. All regular
2123 expression special characters work as specified in
2124 <xref linkend=
"functions-posix-regexp">, except for
<literal>.<
/> which
2125 is taken as a separator as mentioned above,
<literal>*<
/> which is
2126 translated to the regular-expression notation
<literal>.*<
/>,
2127 <literal>?<
/> which is translated to
<literal>.<
/>, and
2128 <literal>$<
/> which is matched literally. You can emulate
2129 these pattern characters at need by writing
2130 <literal>?<
/> for
<literal>.<
/>,
2131 <literal>(
<replaceable class=
"parameter">R
</replaceable>+|)
</literal> for
2132 <literal><replaceable class=
"parameter">R
</replaceable>*
</literal>, or
2133 <literal>(
<replaceable class=
"parameter">R
</replaceable>|)
</literal> for
2134 <literal><replaceable class=
"parameter">R
</replaceable>?
</literal>.
2135 <literal>$<
/> is not needed as a regular-expression character since
2136 the pattern must match the whole name, unlike the usual
2137 interpretation of regular expressions (in other words,
<literal>$<
/>
2138 is automatically appended to your pattern). Write
<literal>*<
/> at the
2139 beginning and/or end if you don't wish the pattern to be anchored.
2140 Note that within double quotes, all regular expression special characters
2141 lose their special meanings and are matched literally. Also, the regular
2142 expression special characters are matched literally in operator name
2143 patterns (i.e., the argument of
<literal>\do<
/>).
2147 Whenever the
<replaceable class=
"parameter">pattern
</replaceable> parameter
2148 is omitted completely, the
<literal>\d<
/> commands display all objects
2149 that are visible in the current schema search path
— this is
2150 equivalent to using the pattern
<literal>*<
/>.
2151 To see all objects in the database, use the pattern
<literal>*.*<
/>.
2157 <title>Advanced features
</title>
2159 <refsect3 id=
"APP-PSQL-variables">
2160 <title id=
"APP-PSQL-variables-title">Variables
</title>
2163 <application>psql
</application> provides variable substitution
2164 features similar to common Unix command shells.
2165 Variables are simply name/value pairs, where the value
2166 can be any string of any length. To set variables, use the
2167 <application>psql
</application> meta-command
2168 <command>\set
</command>:
2170 testdb=
> <userinput>\set foo bar
</userinput>
2172 sets the variable
<literal>foo
</literal> to the value
2173 <literal>bar
</literal>. To retrieve the content of the variable, precede
2174 the name with a colon and use it as the argument of any slash
2177 testdb=
> <userinput>\echo :foo
</userinput>
2184 The arguments of
<command>\set
</command> are subject to the same
2185 substitution rules as with other commands. Thus you can construct
2186 interesting references such as
<literal>\set :foo
2187 'something'
</literal> and get
<quote>soft links
</quote> or
2188 <quote>variable variables
</quote> of
<productname>Perl
</productname>
2189 or
<productname><acronym>PHP
</acronym></productname> fame,
2190 respectively. Unfortunately (or fortunately?), there is no way to do
2191 anything useful with these constructs. On the other hand,
2192 <literal>\set bar :foo
</literal> is a perfectly valid way to copy a
2198 If you call
<command>\set
</command> without a second argument, the
2199 variable is set, with an empty string as value. To unset (or delete) a
2200 variable, use the command
<command>\unset
</command>.
2204 <application>psql
</application>'s internal variable names can
2205 consist of letters, numbers, and underscores in any order and any
2206 number of them. A number of these variables are treated specially
2207 by
<application>psql
</application>. They indicate certain option
2208 settings that can be changed at run time by altering the value of
2209 the variable or represent some state of the application. Although
2210 you can use these variables for any other purpose, this is not
2211 recommended, as the program behavior might grow really strange
2212 really quickly. By convention, all specially treated variables
2213 consist of all upper-case letters (and possibly numbers and
2214 underscores). To ensure maximum compatibility in the future, avoid
2215 using such variable names for your own purposes. A list of all specially
2216 treated variables follows.
2222 <primary>autocommit
</primary>
2223 <secondary>psql
</secondary>
2225 <term><varname>AUTOCOMMIT
</varname></term>
2228 When
<literal>on<
/> (the default), each SQL command is automatically
2229 committed upon successful completion. To postpone commit in this
2230 mode, you must enter a
<command>BEGIN<
/> or
<command>START
2231 TRANSACTION<
/> SQL command. When
<literal>off<
/> or unset, SQL
2232 commands are not committed until you explicitly issue
2233 <command>COMMIT<
/> or
<command>END<
/>. The autocommit-off
2234 mode works by issuing an implicit
<command>BEGIN<
/> for you, just
2235 before any command that is not already in a transaction block and
2236 is not itself a
<command>BEGIN<
/> or other transaction-control
2237 command, nor a command that cannot be executed inside a transaction
2238 block (such as
<command>VACUUM<
/>).
2243 In autocommit-off mode, you must explicitly abandon any failed
2244 transaction by entering
<command>ABORT<
/> or
<command>ROLLBACK<
/>.
2245 Also keep in mind that if you exit the session
2246 without committing, your work will be lost.
2252 The autocommit-on mode is
<productname>PostgreSQL<
/>'s traditional
2253 behavior, but autocommit-off is closer to the SQL spec. If you
2254 prefer autocommit-off, you might wish to set it in the system-wide
2255 <filename>psqlrc
</filename> file or your
2256 <filename>~/.psqlrc
</filename> file.
2263 <term><varname>DBNAME
</varname></term>
2266 The name of the database you are currently connected to. This is
2267 set every time you connect to a database (including program
2268 start-up), but can be unset.
2274 <term><varname>ECHO
</varname></term>
2277 If set to
<literal>all
</literal>, all lines
2278 entered from the keyboard or from a script are written to the standard output
2279 before they are parsed or executed. To select this behavior on program
2280 start-up, use the switch
<option>-a
</option>. If set to
2281 <literal>queries
</literal>,
2282 <application>psql
</application> merely prints all queries as
2283 they are sent to the server. The switch for this is
2284 <option>-e
</option>.
2290 <term><varname>ECHO_HIDDEN
</varname></term>
2293 When this variable is set and a backslash command queries the
2294 database, the query is first shown. This way you can study the
2295 <productname>PostgreSQL
</productname> internals and provide
2296 similar functionality in your own programs. (To select this behavior
2297 on program start-up, use the switch
<option>-E
</option>.) If you set
2298 the variable to the value
<literal>noexec
</literal>, the queries are
2299 just shown but are not actually sent to the server and executed.
2305 <term><varname>ENCODING
</varname></term>
2308 The current client character set encoding.
2314 <term><varname>FETCH_COUNT
</varname></term>
2317 If this variable is set to an integer value
> 0,
2318 the results of
<command>SELECT
</command> queries are fetched
2319 and displayed in groups of that many rows, rather than the
2320 default behavior of collecting the entire result set before
2321 display. Therefore only a
2322 limited amount of memory is used, regardless of the size of
2323 the result set. Settings of
100 to
1000 are commonly used
2324 when enabling this feature.
2325 Keep in mind that when using this feature, a query might
2326 fail after having already displayed some rows.
2330 Although you can use any output format with this feature,
2331 the default
<literal>aligned<
/> format tends to look bad
2332 because each group of
<varname>FETCH_COUNT
</varname> rows
2333 will be formatted separately, leading to varying column
2334 widths across the row groups. The other output formats work better.
2341 <term><varname>HISTCONTROL
</varname></term>
2344 If this variable is set to
<literal>ignorespace
</literal>,
2345 lines which begin with a space are not entered into the history
2346 list. If set to a value of
<literal>ignoredups
</literal>, lines
2347 matching the previous history line are not entered. A value of
2348 <literal>ignoreboth
</literal> combines the two options. If
2349 unset, or if set to any other value than those above, all lines
2350 read in interactive mode are saved on the history list.
2354 This feature was shamelessly plagiarized from
2355 <application>Bash
</application>.
2362 <term><varname>HISTFILE
</varname></term>
2365 The file name that will be used to store the history list. The default
2366 value is
<filename>~/.psql_history
</filename>. For example, putting:
2368 \set HISTFILE ~/.psql_history- :DBNAME
2370 in
<filename>~/.psqlrc
</filename> will cause
2371 <application>psql
</application> to maintain a separate history for
2376 This feature was shamelessly plagiarized from
2377 <application>Bash
</application>.
2384 <term><varname>HISTSIZE
</varname></term>
2387 The number of commands to store in the command history. The
2388 default value is
500.
2392 This feature was shamelessly plagiarized from
2393 <application>Bash
</application>.
2400 <term><varname>HOST
</varname></term>
2403 The database server host you are currently connected to. This is
2404 set every time you connect to a database (including program
2405 start-up), but can be unset.
2411 <term><varname>IGNOREEOF
</varname></term>
2414 If unset, sending an
<acronym>EOF<
/> character (usually
2415 <keycombo action=
"simul"><keycap>Control<
/><keycap>D<
/><
/>)
2416 to an interactive session of
<application>psql
</application>
2417 will terminate the application. If set to a numeric value,
2418 that many
<acronym>EOF<
/> characters are ignored before the
2419 application terminates. If the variable is set but has no
2420 numeric value, the default is
10.
2424 This feature was shamelessly plagiarized from
2425 <application>Bash
</application>.
2432 <term><varname>LASTOID
</varname></term>
2435 The value of the last affected OID, as returned from an
2436 <command>INSERT
</command> or
<command>lo_insert
</command>
2437 command. This variable is only guaranteed to be valid until
2438 after the result of the next
<acronym>SQL
</acronym> command has
2446 <primary>rollback
</primary>
2447 <secondary>psql
</secondary>
2449 <term><varname>ON_ERROR_ROLLBACK
</varname></term>
2452 When
<literal>on<
/>, if a statement in a transaction block
2453 generates an error, the error is ignored and the transaction
2454 continues. When
<literal>interactive<
/>, such errors are only
2455 ignored in interactive sessions, and not when reading script
2456 files. When
<literal>off<
/> (the default), a statement in a
2457 transaction block that generates an error aborts the entire
2458 transaction. The on_error_rollback-on mode works by issuing an
2459 implicit
<command>SAVEPOINT<
/> for you, just before each command
2460 that is in a transaction block, and rolls back to the savepoint
2467 <term><varname>ON_ERROR_STOP
</varname></term>
2470 By default, if non-interactive scripts encounter an error, such
2471 as a malformed
<acronym>SQL
</acronym> command or internal
2472 meta-command, processing continues. This has been the
2473 traditional behavior of
<application>psql
</application> but it
2474 is sometimes not desirable. If this variable is set, script
2475 processing will immediately terminate. If the script was called
2476 from another script it will terminate in the same fashion. If
2477 the outermost script was not called from an interactive
2478 <application>psql
</application> session but rather using the
2479 <option>-f
</option> option,
<application>psql
</application> will
2480 return error code
3, to distinguish this case from fatal error
2481 conditions (error code
1).
2487 <term><varname>PORT
</varname></term>
2490 The database server port to which you are currently connected.
2491 This is set every time you connect to a database (including
2492 program start-up), but can be unset.
2498 <term><varname>PROMPT1
</varname></term>
2499 <term><varname>PROMPT2
</varname></term>
2500 <term><varname>PROMPT3
</varname></term>
2503 These specify what the prompts
<application>psql
</application>
2504 issues should look like. See
<xref
2505 linkend=
"APP-PSQL-prompting"
2506 endterm=
"APP-PSQL-prompting-title"> below.
2512 <term><varname>QUIET
</varname></term>
2515 This variable is equivalent to the command line option
2516 <option>-q
</option>. It is probably not too useful in
2523 <term><varname>SINGLELINE
</varname></term>
2526 This variable is equivalent to the command line option
2527 <option>-S
</option>.
2533 <term><varname>SINGLESTEP
</varname></term>
2536 This variable is equivalent to the command line option
2537 <option>-s
</option>.
2543 <term><varname>USER
</varname></term>
2546 The database user you are currently connected as. This is set
2547 every time you connect to a database (including program
2548 start-up), but can be unset.
2554 <term><varname>VERBOSITY
</varname></term>
2557 This variable can be set to the values
<literal>default<
/>,
2558 <literal>verbose<
/>, or
<literal>terse<
/> to control the verbosity
2569 <title><acronym>SQL
</acronym> Interpolation
</title>
2572 An additional useful feature of
<application>psql
</application>
2573 variables is that you can substitute (
<quote>interpolate
</quote>)
2574 them into regular
<acronym>SQL
</acronym> statements. The syntax for
2575 this is again to prepend the variable name with a colon
2576 (
<literal>:
</literal>):
2578 testdb=
> <userinput>\set foo 'my_table'
</userinput>
2579 testdb=
> <userinput>SELECT * FROM :foo;
</userinput>
2581 would then query the table
<literal>my_table
</literal>. The value of
2582 the variable is copied literally, so it can even contain unbalanced
2583 quotes or backslash commands. You must make sure that it makes sense
2584 where you put it. Variable interpolation will not be performed into
2585 quoted
<acronym>SQL
</acronym> entities.
2589 One possible use of this mechanism is to
2590 copy the contents of a file into a table column. First load the file into a
2591 variable and then proceed as above:
2593 testdb=
> <userinput>\set content '''' `cat my_file.txt` ''''
</userinput>
2594 testdb=
> <userinput>INSERT INTO my_table VALUES (:content);
</userinput>
2596 One problem with this approach is that
<filename>my_file.txt
</filename>
2597 might contain single quotes. These need to be escaped so that
2598 they don't cause a syntax error when the second line is processed. This
2599 could be done with the program
<command>sed
</command>:
2601 testdb=
> <userinput>\set content '''' `sed -e
"s/'/''/g" < my_file.txt` ''''
</userinput>
2603 If you are using non-standard-conforming strings then you'll also need
2604 to double backslashes. This is a bit tricky:
2606 testdb=
> <userinput>\set content '''' `sed -e
"s/'/''/g" -e 's/\\/\\\\/g'
< my_file.txt` ''''
</userinput>
2608 Note the use of different shell quoting conventions so that neither
2609 the single quote marks nor the backslashes are special to the shell.
2610 Backslashes are still special to
<command>sed
</command>, however, so
2611 we need to double them. (Perhaps
2612 at one point you thought it was great that all Unix commands use the
2613 same escape character.)
2617 Since colons can legally appear in SQL commands, the following rule
2618 applies: the character sequence
2619 <quote>:name
</quote> is not changed unless
<quote>name<
/> is the name
2620 of a variable that is currently set. In any case you can escape
2621 a colon with a backslash to protect it from substitution. (The
2622 colon syntax for variables is standard
<acronym>SQL
</acronym> for
2623 embedded query languages, such as
<application>ECPG
</application>.
2624 The colon syntax for array slices and type casts are
2625 <productname>PostgreSQL
</productname> extensions, hence the
2631 <refsect3 id=
"APP-PSQL-prompting">
2632 <title id=
"APP-PSQL-prompting-title">Prompting
</title>
2635 The prompts
<application>psql
</application> issues can be customized
2636 to your preference. The three variables
<varname>PROMPT1
</varname>,
2637 <varname>PROMPT2
</varname>, and
<varname>PROMPT3
</varname> contain strings
2638 and special escape sequences that describe the appearance of the
2639 prompt. Prompt
1 is the normal prompt that is issued when
2640 <application>psql
</application> requests a new command. Prompt
2 is
2641 issued when more input is expected during command input because the
2642 command was not terminated with a semicolon or a quote was not closed.
2643 Prompt
3 is issued when you run an
<acronym>SQL
</acronym>
2644 <command>COPY
</command> command and you are expected to type in the
2645 row values on the terminal.
2649 The value of the selected prompt variable is printed literally,
2650 except where a percent sign (
<literal>%
</literal>) is encountered.
2651 Depending on the next character, certain other text is substituted
2652 instead. Defined substitutions are:
2656 <term><literal>%M
</literal></term>
2659 The full host name (with domain name) of the database server,
2660 or
<literal>[local]
</literal> if the connection is over a Unix
2662 <literal>[local:
<replaceable>/dir/name
</replaceable>]
</literal>,
2663 if the Unix domain socket is not at the compiled in default
2670 <term><literal>%m
</literal></term>
2673 The host name of the database server, truncated at the
2674 first dot, or
<literal>[local]
</literal> if the connection is
2675 over a Unix domain socket.
2681 <term><literal>%
></literal></term>
2682 <listitem><para>The port number at which the database server is listening.
</para></listitem>
2686 <term><literal>%n
</literal></term>
2689 The database session user name. (The expansion of this
2690 value might change during a database session as the result
2691 of the command
<command>SET SESSION
2692 AUTHORIZATION
</command>.)
2698 <term><literal>%/
</literal></term>
2699 <listitem><para>The name of the current database.
</para></listitem>
2703 <term><literal>%~
</literal></term>
2704 <listitem><para>Like
<literal>%/
</literal>, but the output is
<literal>~
</literal>
2705 (tilde) if the database is your default database.
</para></listitem>
2709 <term><literal>%#
</literal></term>
2712 If the session user is a database superuser, then a
2713 <literal>#
</literal>, otherwise a
<literal>></literal>.
2714 (The expansion of this value might change during a database
2715 session as the result of the command
<command>SET SESSION
2716 AUTHORIZATION
</command>.)
2722 <term><literal>%R
</literal></term>
2725 In prompt
1 normally
<literal>=
</literal>, but
<literal>^
</literal> if
2726 in single-line mode, and
<literal>!
</literal> if the session is
2727 disconnected from the database (which can happen if
2728 <command>\connect
</command> fails). In prompt
2 the sequence is
2729 replaced by
<literal>-
</literal>,
<literal>*
</literal>, a single quote,
2730 a double quote, or a dollar sign, depending on whether
2731 <application>psql
</application> expects more input because the
2732 command wasn't terminated yet, because you are inside a
2733 <literal>/* ... */
</literal> comment, or because you are inside
2734 a quoted or dollar-escaped string. In prompt
3 the sequence doesn't
2741 <term><literal>%x
</literal></term>
2744 Transaction status: an empty string when not in a transaction
2745 block, or
<literal>*<
/> when in a transaction block, or
2746 <literal>!<
/> when in a failed transaction block, or
<literal>?<
/>
2747 when the transaction state is indeterminate (for example, because
2748 there is no connection).
2754 <term><literal>%
</literal><replaceable class=
"parameter">digits
</replaceable></term>
2757 The character with the indicated octal code is substituted.
2763 <term><literal>%:
</literal><replaceable class=
"parameter">name
</replaceable><literal>:
</literal></term>
2766 The value of the
<application>psql
</application> variable
2767 <replaceable class=
"parameter">name
</replaceable>. See the
2768 section
<xref linkend=
"APP-PSQL-variables"
2769 endterm=
"APP-PSQL-variables-title"> for details.
2775 <term><literal>%`
</literal><replaceable class=
"parameter">command
</replaceable><literal>`
</literal></term>
2778 The output of
<replaceable
2779 class=
"parameter">command
</replaceable>, similar to ordinary
2780 <quote>back-tick
</quote> substitution.
2786 <term><literal>%[
</literal> ...
<literal>%]
</literal></term>
2789 Prompts can contain terminal control characters which, for
2790 example, change the color, background, or style of the prompt
2791 text, or change the title of the terminal window. In order for
2792 the line editing features of
<application>Readline
</application> to work properly, these
2793 non-printing control characters must be designated as invisible
2794 by surrounding them with
<literal>%[
</literal> and
2795 <literal>%]
</literal>. Multiple pairs of these can occur within
2796 the prompt. For example:
2798 testdb=
> \set PROMPT1 '%[%
033[
1;
33;
40m%]%n@%/%R%[%
033[
0m%]%# '
2800 results in a boldfaced (
<literal>1;
</literal>) yellow-on-black
2801 (
<literal>33;
40</literal>) prompt on VT100-compatible, color-capable
2809 To insert a percent sign into your prompt, write
2810 <literal>%%
</literal>. The default prompts are
2811 <literal>'%/%R%# '
</literal> for prompts
1 and
2, and
2812 <literal>'
>> '
</literal> for prompt
3.
2817 This feature was shamelessly plagiarized from
2818 <application>tcsh
</application>.
2825 <title>Command-Line Editing
</title>
2828 <application>psql
</application> supports the
<application>Readline
</application>
2829 library for convenient line editing and retrieval. The command
2830 history is automatically saved when
<application>psql
</application>
2831 exits and is reloaded when
2832 <application>psql
</application> starts up. Tab-completion is also
2833 supported, although the completion logic makes no claim to be an
2834 <acronym>SQL
</acronym> parser. If for some reason you do not like the tab completion, you
2835 can turn it off by putting this in a file named
2836 <filename>.inputrc
</filename> in your home directory:
2839 set disable-completion on
2842 (This is not a
<application>psql
</application> but a
2843 <application>Readline
</application> feature. Read its documentation
2844 for further details.)
2852 <title>Environment
</title>
2857 <term><envar>COLUMNS
</envar></term>
2861 If
<literal>\pset columns<
/> is zero, controls the
2862 width for the
<literal>wrapped<
/> format and width for determining
2863 if wide output requires the pager.
2869 <term><envar>PAGER
</envar></term>
2873 If the query results do not fit on the screen, they are piped
2874 through this command. Typical values are
2875 <literal>more
</literal> or
<literal>less
</literal>. The default
2876 is platform-dependent. The use of the pager can be disabled by
2877 using the
<command>\pset
</command> command.
2883 <term><envar>PGDATABASE
</envar></term>
2884 <term><envar>PGHOST
</envar></term>
2885 <term><envar>PGPORT
</envar></term>
2886 <term><envar>PGUSER
</envar></term>
2890 Default connection parameters (see
<xref linkend=
"libpq-envars">).
2896 <term><envar>PSQL_EDITOR
</envar></term>
2897 <term><envar>EDITOR
</envar></term>
2898 <term><envar>VISUAL
</envar></term>
2902 Editor used by the
<command>\e
</command> command. The variables
2903 are examined in the order listed; the first that is set is used.
2909 <term><envar>SHELL
</envar></term>
2913 Command executed by the
<command>\!
</command> command.
2919 <term><envar>TMPDIR
</envar></term>
2923 Directory for storing temporary files. The default is
2924 <filename>/tmp
</filename>.
2931 This utility, like most other
<productname>PostgreSQL<
/> utilities,
2932 also uses the environment variables supported by
<application>libpq<
/>
2933 (see
<xref linkend=
"libpq-envars">).
2940 <title>Files
</title>
2945 Before starting up,
<application>psql
</application> attempts to
2946 read and execute commands from the system-wide
2947 <filename>psqlrc
</filename> file and the user's
2948 <filename>~/.psqlrc
</filename> file.
2949 (On Windows, the user's startup file is named
2950 <filename>%APPDATA%\postgresql\psqlrc.conf
</filename>.)
2951 See
<filename><replaceable>PREFIX<
/>/share/psqlrc.sample<
/>
2952 for information on setting up the system-wide file. It could be used
2953 to set up the client or the server to taste (using the
<command>\set
2954 </command> and
<command>SET
</command> commands).
2960 Both the system-wide
<filename>psqlrc
</filename> file and the user's
2961 <filename>~/.psqlrc
</filename> file can be made version-specific
2962 by appending a dash and the
<productname>PostgreSQL
</productname>
2963 release number, for example
<filename>~/.psqlrc-
&version;</filename>.
2964 A matching version-specific file will be read in preference to a
2965 non-version-specific file.
2971 The command-line history is stored in the file
2972 <filename>~/.psql_history
</filename>, or
2973 <filename>%APPDATA%\postgresql\psql_history
</filename> on Windows.
2981 <title>Notes
</title>
2986 In an earlier life
<application>psql
</application> allowed the
2987 first argument of a single-letter backslash command to start
2988 directly after the command, without intervening whitespace.
2989 As of
<productname>PostgreSQL
</productname> 8.4 this is no
2996 <application>psql
</application> is only guaranteed to work smoothly
2997 with servers of the same version. That does not mean other combinations
2998 will fail outright, but subtle and not-so-subtle problems might come
2999 up. Backslash commands are particularly likely to fail if the
3000 server is of a newer version than
<application>psql<
/> itself. However,
3001 backslash commands of the
<literal>\d<
/> family should work with
3002 servers of versions back to
7.4, though not necessarily with servers
3003 newer than
<application>psql<
/> itself.
3012 <title>Notes for Windows users
</title>
3015 <application>psql
</application> is built as a
<quote>console
3016 application<
/>. Since the Windows console windows use a different
3017 encoding than the rest of the system, you must take special care
3018 when using
8-bit characters within
<application>psql
</application>.
3019 If
<application>psql
</application> detects a problematic
3020 console code page, it will warn you at startup. To change the
3021 console code page, two things are necessary:
3026 Set the code page by entering
<userinput>cmd.exe /c chcp
3027 1252</userinput>. (
1252 is a code page that is appropriate for
3028 German; replace it with your value.) If you are using Cygwin,
3029 you can put this command in
<filename>/etc/profile
</filename>.
3035 Set the console font to
<literal>Lucida Console<
/>, because the
3036 raster font does not work with the ANSI code page.
3045 <refsect1 id=
"APP-PSQL-examples">
3046 <title id=
"APP-PSQL-examples-title">Examples
</title>
3049 The first example shows how to spread a command over several lines of
3050 input. Notice the changing prompt:
3052 testdb=
> <userinput>CREATE TABLE my_table (
</userinput>
3053 testdb(
> <userinput> first integer not null default
0,
</userinput>
3054 testdb(
> <userinput> second text)
</userinput>
3055 testdb-
> <userinput>;
</userinput>
3058 Now look at the table definition again:
3060 testdb=
> <userinput>\d my_table
</userinput>
3062 Attribute | Type | Modifier
3063 -----------+---------+--------------------
3064 first | integer | not null default
0
3068 Now we change the prompt to something more interesting:
3070 testdb=
> <userinput>\set PROMPT1 '%n@%m %~%R%# '
</userinput>
3071 peter@localhost testdb=
>
3073 Let's assume you have filled the table with data and want to take a
3076 peter@localhost testdb=
> SELECT * FROM my_table;
3086 You can display tables in different ways by using the
3087 <command>\pset
</command> command:
3089 peter@localhost testdb=
> <userinput>\pset border
2</userinput>
3091 peter@localhost testdb=
> <userinput>SELECT * FROM my_table;
</userinput>
3102 peter@localhost testdb=
> <userinput>\pset border
0</userinput>
3104 peter@localhost testdb=
> <userinput>SELECT * FROM my_table;
</userinput>
3113 peter@localhost testdb=
> <userinput>\pset border
1</userinput>
3115 peter@localhost testdb=
> <userinput>\pset format unaligned
</userinput>
3116 Output format is unaligned.
3117 peter@localhost testdb=
> <userinput>\pset fieldsep
","</userinput>
3118 Field separator is
",".
3119 peter@localhost testdb=
> <userinput>\pset tuples_only
</userinput>
3120 Showing only tuples.
3121 peter@localhost testdb=
> <userinput>SELECT second, first FROM my_table;
</userinput>
3127 Alternatively, use the short commands:
3129 peter@localhost testdb=
> <userinput>\a \t \x
</userinput>
3130 Output format is aligned.
3132 Expanded display is on.
3133 peter@localhost testdb=
> <userinput>SELECT * FROM my_table;
</userinput>