1999-07-22 17:09:15 +02:00
|
|
|
<!--
|
2000-07-21 19:58:49 +02:00
|
|
|
$Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.34 2000/07/21 17:58:49 momjian Exp $
|
1999-07-22 17:09:15 +02:00
|
|
|
Postgres documentation
|
|
|
|
-->
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<refentry id="APP-PSQL">
|
1999-11-04 23:07:57 +01:00
|
|
|
<refmeta>
|
|
|
|
<refentrytitle id="app-psql-title">
|
|
|
|
<application>psql</application>
|
|
|
|
</refentrytitle>
|
|
|
|
<refmiscinfo>Application</refmiscinfo>
|
|
|
|
</refmeta>
|
|
|
|
|
|
|
|
<refnamediv>
|
|
|
|
<refname>
|
|
|
|
<application>psql</application>
|
|
|
|
</refname>
|
|
|
|
<refpurpose>
|
2000-03-27 19:14:43 +02:00
|
|
|
<productname>Postgres</productname> interactive terminal
|
1999-11-04 23:07:57 +01:00
|
|
|
</refpurpose>
|
|
|
|
</refnamediv>
|
|
|
|
|
|
|
|
<refsynopsisdiv>
|
|
|
|
<refsynopsisdivinfo>
|
|
|
|
<date>1999-10-26</date>
|
|
|
|
</refsynopsisdivinfo>
|
|
|
|
|
|
|
|
<synopsis>psql [ <replaceable class="parameter">options</replaceable> ] [ <replaceable class="parameter">dbname</replaceable> [ <replaceable class="parameter">user</replaceable> ] ]</synopsis>
|
1999-06-14 09:37:05 +02:00
|
|
|
|
|
|
|
<refsect2 id="R2-APP-PSQL-1">
|
1999-11-04 23:07:57 +01:00
|
|
|
<refsect2info>
|
|
|
|
<date>1998-09-26</date>
|
|
|
|
</refsect2info>
|
|
|
|
|
2000-01-14 23:18:03 +01:00
|
|
|
<title>Summary</title>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<para>
|
2000-01-14 23:18:03 +01:00
|
|
|
<application>psql</application> is a terminal-based front-end to
|
2000-03-27 19:14:43 +02:00
|
|
|
<productname>Postgres</productname>. It enables you to type in queries
|
|
|
|
interactively, issue them to <productname>Postgres</productname>, and see
|
2000-01-14 23:18:03 +01:00
|
|
|
the query results. Alternatively, input can be from a file.
|
|
|
|
In addition, it provides a number of meta-commands and
|
|
|
|
various shell-like features to facilitate writing scripts and automating a wide
|
|
|
|
variety of tasks.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
2000-01-14 23:18:03 +01:00
|
|
|
|
1999-05-20 07:40:27 +02:00
|
|
|
</refsect2>
|
2000-01-14 23:18:03 +01:00
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
</refsynopsisdiv>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<refsect1 id="R1-APP-PSQL-1">
|
1999-06-14 09:37:05 +02:00
|
|
|
<refsect1info>
|
1999-11-04 23:07:57 +01:00
|
|
|
<date>1998-10-26</date>
|
1999-06-14 09:37:05 +02:00
|
|
|
</refsect1info>
|
1999-11-04 23:07:57 +01:00
|
|
|
|
|
|
|
<title>Description</title>
|
|
|
|
|
2000-01-14 23:18:03 +01:00
|
|
|
<refsect2 id="R2-APP-PSQL-connecting">
|
1999-11-04 23:07:57 +01:00
|
|
|
<refsect2info>
|
2000-01-14 23:18:03 +01:00
|
|
|
<date>2000-01-14</date>
|
1999-11-04 23:07:57 +01:00
|
|
|
</refsect2info>
|
|
|
|
|
|
|
|
<title>Connecting To A Database</title>
|
|
|
|
|
|
|
|
<para>
|
2000-03-27 19:14:43 +02:00
|
|
|
<application>psql</application> is a regular <productname>Postgres</productname>
|
2000-02-08 00:10:11 +01:00
|
|
|
client application. In order to connect to a database you need to know the
|
|
|
|
name of your target database, the hostname and port number of the server
|
2000-01-14 23:18:03 +01:00
|
|
|
and what user name you want to connect as. <application>psql</application> can be
|
|
|
|
told about those parameters via command line options, namely <option>-d</option>,
|
|
|
|
<option>-h</option>, <option>-p</option>, and <option>-U</option> respectively.
|
|
|
|
If an argument is found that does not belong to any option it will be interpreted
|
2000-03-21 02:52:12 +01:00
|
|
|
as the database name (or the user name, if the database name is also
|
|
|
|
given). Not all these options are required, defaults do apply.
|
|
|
|
If you omit the host name psql will connect via a UNIX domain socket
|
|
|
|
to a server on the
|
2000-01-14 23:18:03 +01:00
|
|
|
local host. The default port number is compile-time determined. Since the database
|
2000-03-21 02:52:12 +01:00
|
|
|
server uses the same default, you will not have to specify the port in most
|
|
|
|
cases. The default user name is your Unix username, as is the default
|
|
|
|
database name.
|
2000-01-14 23:18:03 +01:00
|
|
|
Note that you can't just connect to any database under any username. Your database
|
|
|
|
administrator should have informed you about your access rights. To save you some typing
|
|
|
|
you can also set the environment variables <envar>PGDATABASE</envar>,
|
2000-03-21 02:52:12 +01:00
|
|
|
<envar>PGHOST</envar>, <envar>PGPORT</envar> and <envar>PGUSER</envar>
|
|
|
|
to appropriate values.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
If the connection could not be made for any reason (e.g., insufficient
|
|
|
|
privileges, postmaster is not running on the server, etc.),
|
|
|
|
<application>psql</application> will return an error and terminate.
|
|
|
|
</para>
|
1999-05-20 07:40:27 +02:00
|
|
|
</refsect2>
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<refsect2 id="R2-APP-PSQL-4">
|
1999-11-04 23:07:57 +01:00
|
|
|
<refsect2info>
|
|
|
|
<date>1998-09-26</date>
|
|
|
|
</refsect2info>
|
|
|
|
|
|
|
|
<title>Entering Queries</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
In normal operation, <application>psql</application> provides a prompt with
|
2000-03-21 02:52:12 +01:00
|
|
|
the name of the database to which <application>psql</application> is currently
|
|
|
|
connected, followed by the string "=>". For example,
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
1999-05-20 07:40:27 +02:00
|
|
|
$ <userinput>psql testdb</userinput>
|
1999-11-04 23:07:57 +01:00
|
|
|
Welcome to psql, the PostgreSQL interactive terminal.
|
1999-11-05 16:44:57 +01:00
|
|
|
|
1999-11-05 19:21:09 +01:00
|
|
|
Type: \copyright for distribution terms
|
|
|
|
\h for help with SQL commands
|
|
|
|
\? for help on internal slash commands
|
|
|
|
\g or terminate with semicolon to execute query
|
|
|
|
\q to quit
|
1999-11-05 01:57:39 +01:00
|
|
|
|
1999-05-20 07:40:27 +02:00
|
|
|
testdb=>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
1999-05-20 07:40:27 +02:00
|
|
|
At the prompt, the user may type in <acronym>SQL</acronym> queries.
|
1999-11-04 23:07:57 +01:00
|
|
|
Ordinarily, input lines are sent to the backend when a query-terminating
|
2000-01-14 23:18:03 +01:00
|
|
|
semicolon is reached. An end of line does not terminate a query! Thus queries
|
2000-03-21 02:52:12 +01:00
|
|
|
can be spread over several lines for clarity. If the query was sent and without
|
2000-02-08 00:10:11 +01:00
|
|
|
error, the query results are displayed on the screen.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Whenever a query is executed, <application>psql</application> also polls
|
|
|
|
for asynchronous notification events generated by
|
|
|
|
<xref linkend="SQL-LISTEN" endterm="SQL-LISTEN-title"> and
|
|
|
|
<xref linkend="SQL-NOTIFY" endterm="SQL-NOTIFY-title">.
|
|
|
|
</para>
|
1999-05-20 07:40:27 +02:00
|
|
|
</refsect2>
|
1999-11-04 23:07:57 +01:00
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
<refsect1 id="R1-APP-PSQL-2">
|
|
|
|
<refsect1info>
|
|
|
|
<date>1998-09-26</date>
|
|
|
|
</refsect1info>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<title><application>psql</application> Meta-Commands</title>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Anything you enter in <application>psql</application> that begins with an
|
2000-01-14 23:18:03 +01:00
|
|
|
unquoted backslash is a <application>psql</application> meta-command that is
|
2000-03-21 02:52:12 +01:00
|
|
|
processed by <application>psql</application> itself.
|
2000-01-14 23:18:03 +01:00
|
|
|
These commands are what makes
|
|
|
|
<application>psql</application> interesting for administration or scripting.
|
|
|
|
Meta-commands are more commonly called slash or backslash commands.
|
1999-06-14 09:37:05 +02:00
|
|
|
</para>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<para>
|
|
|
|
The format of a <application>psql</application> command is the backslash,
|
|
|
|
followed immediately by a command verb, then any arguments. The arguments
|
|
|
|
are separated from the command verb and each other by any number of white
|
|
|
|
space characters.
|
|
|
|
</para>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<para>
|
2000-02-08 00:10:11 +01:00
|
|
|
To include whitespace into an argument you must quote it with a single
|
2000-03-21 02:52:12 +01:00
|
|
|
quote. To include a single quote into such an argument, precede it by
|
2000-02-08 00:10:11 +01:00
|
|
|
a backslash. Anything contained in single quotes is furthermore subject to
|
|
|
|
C-like substitutions for <literal>\n</literal> (new line), <literal>\t</literal>
|
|
|
|
(tab), <literal>\</literal><replaceable>digits</replaceable>,
|
1999-11-04 23:07:57 +01:00
|
|
|
<literal>\0</literal><replaceable>digits</replaceable>, and
|
|
|
|
<literal>\0x</literal><replaceable>digits</replaceable>
|
|
|
|
(the character with the given decimal, octal, or hexadecimal code).
|
|
|
|
</para>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<para>
|
2000-02-08 00:10:11 +01:00
|
|
|
If an unquoted argument begins with a colon (<literal>:</literal>),
|
1999-11-04 23:07:57 +01:00
|
|
|
it is taken as a variable and the value of the variable is taken as the
|
2000-02-08 00:10:11 +01:00
|
|
|
argument instead.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<para>
|
2000-02-08 00:10:11 +01:00
|
|
|
Arguments that are quoted in <quote>backticks</quote> (<literal>`</literal>)
|
|
|
|
are taken as a command line that is passed to the shell. The output of the
|
|
|
|
command (with a trailing newline removed) is taken as the argument value.
|
|
|
|
The above escape sequences also apply in backticks.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Some commands take the name of an <acronym>SQL</acronym> identifier (such as
|
|
|
|
a table name) as argument. These arguments follow the syntax rules of
|
|
|
|
<acronym>SQL</acronym> regarding double quotes: an identifier without
|
|
|
|
double quotes is coerced to lower-case. For all other commands
|
|
|
|
double quotes are not special and will become part of the argument.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<para>
|
|
|
|
Parsing for arguments stops when another unquoted backslash occurs. This
|
|
|
|
is taken as the beginning of a new meta-command. The special sequence
|
|
|
|
<literal>\\</literal>
|
|
|
|
(two backslashes) marks the end of arguments and continues parsing
|
|
|
|
<acronym>SQL</acronym> queries, if any. That way <acronym>SQL</acronym> and
|
|
|
|
<application>psql</application> commands can be freely mixed on a line.
|
2000-02-08 00:10:11 +01:00
|
|
|
But in any case, the arguments of a meta-command cannot continue beyond the end
|
1999-11-04 23:07:57 +01:00
|
|
|
of the line.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The following meta-commands are defined:
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\a</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
If the current table output format is unaligned, switch to aligned.
|
|
|
|
If it is not unaligned, set it to unaligned. This command is
|
|
|
|
kept for backwards compatibility. See <command>\pset</command> for a
|
|
|
|
general solution.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\C</literal> [ <replaceable class="parameter">title</replaceable> ]</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Set the title of any tables being printed as the result of a query or
|
|
|
|
unset any such title. This command is equivalent to
|
|
|
|
<literal>\pset title <replaceable class="parameter">title</replaceable></literal>.
|
|
|
|
(The name of this
|
|
|
|
command derives from <quote>caption</quote>, as it was previously only
|
|
|
|
used to set the caption in an <acronym>HTML</acronym> table.)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\connect</literal> (or <literal>\c</literal>) [ <replaceable class="parameter">dbname</replaceable> [ <replaceable class="parameter">username</replaceable> ] ]</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Establishes a connection to a new database and/or under a user name. The
|
|
|
|
previous connection is closed.
|
|
|
|
If <replaceable class="parameter">dbname</replaceable> is <literal>-</literal>
|
|
|
|
the current database name is assumed.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2000-01-14 23:18:03 +01:00
|
|
|
If <replaceable class="parameter">username</replaceable> is omitted
|
|
|
|
the current user name is assumed.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
As a special rule, <command>\connect</command> without any arguments will connect
|
|
|
|
to the default database as the default user (as you would have gotten
|
|
|
|
by starting <application>psql</application> without any arguments).
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
If the connection attempt failed (wrong username, access denied, etc.) the
|
2000-02-08 00:10:11 +01:00
|
|
|
previous connection will be kept if and only if <application>psql</application> is
|
1999-11-04 23:07:57 +01:00
|
|
|
in interactive mode. When executing a non-interactive script, processing
|
|
|
|
will immediately stop with an error. This distinction was chosen as a user
|
|
|
|
convenience against typos on the one hand, and a safety mechanism that
|
|
|
|
scripts are not accidentally acting on the wrong database on the other hand.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2000-01-14 23:18:03 +01:00
|
|
|
<term><literal>\copy</literal> <replaceable class="parameter">table</replaceable>
|
1999-11-04 23:07:57 +01:00
|
|
|
[ <literal>with oids</literal> ] { <literal>from</literal> | <literal>to</literal> }
|
2000-01-14 23:18:03 +01:00
|
|
|
<replaceable class="parameter">filename</replaceable> | stdin | stdout
|
|
|
|
[ <literal>with delimiters</literal> '<replaceable class="parameter">characters</replaceable>' ]
|
|
|
|
[ <literal>with null as</literal> '<replaceable class="parameter">string</replaceable>' ]
|
1999-11-04 23:07:57 +01:00
|
|
|
</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Performs a frontend (client) copy. This is an operation that runs an
|
|
|
|
<acronym>SQL</acronym> <xref linkend="SQL-COPY" endterm="SQL-COPY-title"> command,
|
2000-03-21 02:52:12 +01:00
|
|
|
but instead of the backend's reading or writing the specified file, and
|
1999-11-04 23:07:57 +01:00
|
|
|
consequently requiring backend access and special user privilege,
|
|
|
|
as well as being bound to the file system accessible by the backend,
|
|
|
|
<application>psql</application> reads or writes the
|
2000-03-21 02:52:12 +01:00
|
|
|
file and routes the data between the backend and the local file system.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2000-03-21 02:52:12 +01:00
|
|
|
The syntax of the command is similar to that of the <acronym>SQL</acronym>
|
|
|
|
<command>COPY</command> command (see its description for the details).
|
|
|
|
Note that, because of this, special parsing rules apply to the
|
1999-11-04 23:07:57 +01:00
|
|
|
<command>\copy</command> command. In particular, the variable
|
|
|
|
substitution rules and backslash escapes do not apply.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<tip>
|
|
|
|
<para>
|
|
|
|
This operation is not as efficient as the <acronym>SQL</acronym>
|
|
|
|
<command>COPY</command> command because all data must pass through the
|
2000-02-08 00:10:11 +01:00
|
|
|
client/server IP or socket connection. For large amounts of data the other
|
1999-11-04 23:07:57 +01:00
|
|
|
technique may be preferable.
|
|
|
|
</para>
|
|
|
|
</tip>
|
2000-01-14 23:18:03 +01:00
|
|
|
|
|
|
|
<note>
|
|
|
|
<para>
|
|
|
|
Note the difference in interpretation of <literal>stdin</literal> and <literal>stdout</literal>
|
2000-03-21 02:52:12 +01:00
|
|
|
between frontend and backend copies: in a frontend copy these always refer
|
2000-01-14 23:18:03 +01:00
|
|
|
to <application>psql</application>'s input and output stream. On a backend
|
2000-03-21 02:52:12 +01:00
|
|
|
copy <literal>stdin</literal> comes from wherever the <command>COPY</command>
|
|
|
|
itself came from (for example, a script run with the <option>-f</option> option),
|
2000-01-14 23:18:03 +01:00
|
|
|
and <literal>stdout</literal> refers to the query output stream (see
|
|
|
|
<command>\o</command> meta-command below).
|
|
|
|
</para>
|
|
|
|
</note>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\copyright</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-03-27 19:14:43 +02:00
|
|
|
Shows the copyright and distribution terms of <application>Postgres</application>.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\d</literal> <replaceable class="parameter">relation</replaceable> </term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
Shows all columns of <replaceable class="parameter">relation</replaceable>
|
1999-11-04 23:07:57 +01:00
|
|
|
(which could be a table, view, index, or sequence),
|
|
|
|
their types, and any special attributes such as <literal>NOT NULL</literal>
|
|
|
|
or defaults, if any.
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
If the relation is, in fact, a table, any defined indices are also listed.
|
|
|
|
If the relation is a view, the view definition is also shown.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2000-01-12 20:36:36 +01:00
|
|
|
The command form <literal>\d+</literal> is identical, but any comments
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
associated with the table columns are shown as well.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<note>
|
|
|
|
<para>
|
|
|
|
If <command>\d</command> is called without any arguments, it is
|
|
|
|
equivalent to <command>\dtvs</command> which will show a list
|
|
|
|
of all tables, views, and sequences. This is purely a convenience
|
|
|
|
measure.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\da</literal> [ <replaceable class="parameter">pattern</replaceable> ]</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Lists all available aggregate functions, together with the data type they operate on.
|
|
|
|
If <replaceable class="parameter">pattern</replaceable>
|
|
|
|
(a regular expression) is specified, only matching aggregates are shown.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\dd</literal> [ <replaceable class="parameter">object</replaceable> ]</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Shows the descriptions of <replaceable class="parameter">object</replaceable>
|
|
|
|
(which can be a regular expression), or of all objects if no argument is given.
|
|
|
|
(<quote>Object</quote> covers aggregates, functions, operators, types, relations
|
|
|
|
(tables, views, indices, sequences, large objects), rules, and triggers.) For example:
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
=> <userinput>\dd version</userinput>
|
|
|
|
Object descriptions
|
|
|
|
Name | What | Description
|
|
|
|
---------+----------+---------------------------
|
|
|
|
version | function | PostgreSQL version string
|
|
|
|
(1 row)
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Descriptions for objects can be generated with the <command>COMMENT ON</command>
|
|
|
|
<acronym>SQL</acronym> command.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<note>
|
|
|
|
<para>
|
2000-03-27 19:14:43 +02:00
|
|
|
<productname>Postgres</productname> stores the object descriptions in the
|
1999-11-04 23:07:57 +01:00
|
|
|
pg_description system table.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\df [ <replaceable class="parameter">pattern</replaceable> ]</literal></term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Lists available functions, together with their argument and return types.
|
|
|
|
If <replaceable class="parameter">pattern</replaceable>
|
|
|
|
(a regular expression) is specified, only matching functions are shown.
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
If the form <literal>\df+</literal> is used, additional information about
|
2000-01-12 20:36:36 +01:00
|
|
|
each function, including language and description is shown.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\distvS [ <replaceable class="parameter">pattern</replaceable> ]</literal></term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This is not the actual command name: The letters i, s, t, v, S stand for
|
|
|
|
index, sequence, table, view, and system table, respectively. You can specify
|
|
|
|
any or all of them in any order to obtain a listing of them, together with
|
|
|
|
who the owner is.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
If <replaceable class="parameter">pattern</replaceable> is specified,
|
|
|
|
it is a regular expression restricts the listing to those objects
|
2000-01-12 20:36:36 +01:00
|
|
|
whose name matches. If one appends a <quote>+</quote> to the command name,
|
1999-11-04 23:07:57 +01:00
|
|
|
each object is listed with its associated description, if any.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\dl</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This is an alias for <command>\lo_list</command>, which shows a list of large objects.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
2000-04-16 17:46:40 +02:00
|
|
|
<term><literal>\do [ <replaceable class="parameter">name</replaceable> ]</literal></term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Lists available operators with their operand and return types.
|
2000-04-16 17:46:40 +02:00
|
|
|
If <replaceable class="parameter">name</replaceable>
|
1999-11-04 23:07:57 +01:00
|
|
|
is specified, only operators with that name will be shown.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\dp</literal> [ <replaceable class="parameter">pattern</replaceable> ]</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This is an alias for <command>\z</command> which was included for its
|
|
|
|
greater mnemonic value (<quote>display permissions</quote>).
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\dT [ <replaceable class="parameter">pattern</replaceable> ]</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
Lists all data types or only those that match <replaceable class="parameter">pattern</replaceable>.
|
2000-01-12 20:36:36 +01:00
|
|
|
The command form <literal>\dT+</literal> shows extra information.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\edit</literal> (or <literal>\e</literal>) [ <replaceable class="parameter">filename</replaceable> ]</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
If <replaceable class="parameter">filename</replaceable> is specified,
|
2000-03-21 02:52:12 +01:00
|
|
|
the file is edited; after the editor exits, its content is copied
|
1999-11-04 23:07:57 +01:00
|
|
|
back to the query buffer. If no argument is given, the current query
|
|
|
|
buffer is copied to a temporary file which is then edited in the same
|
|
|
|
fashion.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The new query buffer is then re-parsed according to the normal rules of
|
|
|
|
<application>psql</application>, where the whole buffer is treated as
|
2000-07-21 19:58:49 +02:00
|
|
|
a single line. (Thus you cannot make scripts this way.
|
|
|
|
Use <command>\i</command> for that.) This means also that
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
if the query ends with (or rather contains) a semicolon, it is immediately
|
1999-11-04 23:07:57 +01:00
|
|
|
executed. In other cases it will merely wait in the query buffer.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<tip>
|
|
|
|
<para>
|
|
|
|
<application>psql</application> searches the environment variables
|
|
|
|
<envar>PSQL_EDITOR</envar>, <envar>EDITOR</envar>, and <envar>VISUAL</envar>
|
|
|
|
(in that order) for an editor to use. If all of them are unset,
|
|
|
|
<filename>/bin/vi</filename> is run.
|
|
|
|
</para>
|
|
|
|
</tip>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\echo</literal> <replaceable class="parameter">text</replaceable> [ ... ]</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-02-08 00:10:11 +01:00
|
|
|
Prints the arguments to the standard output, separated by one space and
|
|
|
|
followed by a newline. This can be useful to
|
1999-11-04 23:07:57 +01:00
|
|
|
intersperse information in the output of scripts. For example:
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
=> <userinput>\echo `date`</userinput>
|
|
|
|
Tue Oct 26 21:40:57 CEST 1999
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
2000-02-08 00:10:11 +01:00
|
|
|
If the first argument is an unquoted <literal>-n</literal> the the trailing
|
|
|
|
newline is not written.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<tip>
|
|
|
|
<para>
|
|
|
|
If you use the <command>\o</command> command to redirect your query output
|
|
|
|
you may wish to use <command>\qecho</command> instead of this command.
|
|
|
|
</para>
|
|
|
|
</tip>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
2000-02-20 15:29:21 +01:00
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\encoding</literal> [ <replaceable class="parameter">encoding</replaceable> ]</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Sets the client encoding, if you are using multibyte encodings.
|
|
|
|
Without an argument, this command shows the current encoding.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\f</literal> [ <replaceable class="parameter">string</replaceable> ]</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-07-21 19:58:49 +02:00
|
|
|
Sets the field separator for unaligned query output. The default is
|
|
|
|
pipe (<literal>|</literal>). See also <command>\pset</command> for a generic way
|
1999-11-04 23:07:57 +01:00
|
|
|
of setting output options.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\g</literal> [ { <replaceable class="parameter">filename</replaceable> | <literal>|</literal><replaceable class="parameter">command</replaceable> } ]</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Sends the current query input buffer to the backend and optionally
|
|
|
|
saves the output in <replaceable class="parameter">filename</replaceable>
|
|
|
|
or pipes the output into a separate Unix shell to execute
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<replaceable class="parameter">command</replaceable>. A bare <literal>\g</literal>
|
1999-11-04 23:07:57 +01:00
|
|
|
is virtually equivalent to a semicolon. A <literal>\g</literal> with argument
|
|
|
|
is a <quote>one-shot</quote> alternative to the <command>\o</command> command.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\help</literal> (or <literal>\h</literal>) [ <replaceable class="parameter">command</replaceable> ]</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Give syntax help on the specified <acronym>SQL</acronym> command.
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
If <replaceable class="parameter">command</replaceable> is not specified,
|
1999-11-04 23:07:57 +01:00
|
|
|
then <application>psql</application> will
|
|
|
|
list all the commands for which syntax help is
|
|
|
|
available. If <replaceable class="parameter">command</replaceable>
|
|
|
|
is an asterisk (<quote>*</quote>), then
|
|
|
|
syntax help on all <acronym>SQL</acronym> commands is shown.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<note>
|
|
|
|
<para>
|
|
|
|
To simplify typing, commands that consists of several words do not have to be quoted.
|
|
|
|
Thus it is fine to type <userinput>\help alter table</userinput>.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\H</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Turns on <acronym>HTML</acronym> query output format. If the <acronym>HTML</acronym>
|
|
|
|
format is already on, it is switched back to the default aligned text format. This
|
|
|
|
command is for compatibility and convenience, but see <command>\pset</command> about
|
|
|
|
setting other output options.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\i</literal> <replaceable class="parameter">filename</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Reads input from the file <replaceable class="parameter">filename</replaceable>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
and executes it as though it had been typed on the keyboard.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
<note>
|
|
|
|
<para>
|
|
|
|
If you want to see the lines on the screen as they are read you must set
|
2000-02-13 22:45:15 +01:00
|
|
|
the variable <envar>ECHO</envar> to <literal>all</literal>.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\l</literal> (or <literal>\list</literal>)</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
List all the databases in the server as well as their owners. Append a
|
2000-01-12 20:36:36 +01:00
|
|
|
<quote>+</quote> to the command name to see any descriptions
|
2000-03-27 19:14:43 +02:00
|
|
|
for the databases as well. If your <productname>Postgres</productname>
|
1999-11-04 23:07:57 +01:00
|
|
|
installation was
|
|
|
|
compiled with multibyte encoding support, the encoding scheme of each
|
|
|
|
database is shown as well.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\lo_export</literal> <replaceable class="parameter">loid</replaceable> <replaceable class="parameter">filename</replaceable></term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Reads the large object with <acronym>OID</acronym> <replaceable class="parameter">loid</replaceable>
|
|
|
|
from the database and writes it to <replaceable class="parameter">filename</replaceable>.
|
|
|
|
Note that this is subtly different from the server function <function>lo_export</function>,
|
|
|
|
which acts with the permissions of the user that the database server runs as and
|
|
|
|
on the server's file system.
|
|
|
|
</para>
|
|
|
|
<tip>
|
|
|
|
<para>
|
|
|
|
Use <command>\lo_list</command> to find out the large object's <acronym>OID</acronym>.
|
|
|
|
</para>
|
|
|
|
</tip>
|
|
|
|
<note>
|
|
|
|
<para>
|
2000-01-14 23:18:03 +01:00
|
|
|
See the description of the <envar>LO_TRANSACTION</envar> variable for
|
1999-11-04 23:07:57 +01:00
|
|
|
important information concerning all large object operations.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\lo_import</literal> <replaceable class="parameter">filename</replaceable> [ <replaceable class="parameter">comment</replaceable> ]</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-03-27 19:14:43 +02:00
|
|
|
Stores the file into a <productname>Postgres</productname> <quote>large object</quote>.
|
1999-11-04 23:07:57 +01:00
|
|
|
Optionally, it associates the given comment with the object. Example:
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
2000-02-08 00:10:11 +01:00
|
|
|
foo=> <userinput>\lo_import '/home/peter/pictures/photo.xcf' 'a picture of me'</userinput>
|
1999-11-04 23:07:57 +01:00
|
|
|
lo_import 152801
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
The response indicates that the large object received object id 152801
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
which one ought to remember if one wants to access the object ever again.
|
1999-11-04 23:07:57 +01:00
|
|
|
For that reason it is recommended to always associate a human-readable
|
|
|
|
comment with every object. Those can then be seen with the
|
2000-01-14 23:18:03 +01:00
|
|
|
<command>\lo_list</command> command.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Note that this command is subtly different from the server-side <function>lo_import</function>
|
|
|
|
because it acts as the local user on the local file system, rather than the server's
|
|
|
|
user and file system.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<note>
|
|
|
|
<para>
|
2000-01-14 23:18:03 +01:00
|
|
|
See the description of the <envar>LO_TRANSACTION</envar> variable for
|
1999-11-04 23:07:57 +01:00
|
|
|
important information concerning all large object operations.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\lo_list</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-03-27 19:14:43 +02:00
|
|
|
Shows a list of all <productname>Postgres</productname> <quote>large
|
1999-11-04 23:07:57 +01:00
|
|
|
objects</quote> currently stored in the database along with their owners.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\lo_unlink</literal> <replaceable class="parameter">loid</replaceable></term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Deletes the large object with <acronym>OID</acronym> <replaceable class="parameter">loid</replaceable>
|
|
|
|
from the database.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<tip>
|
|
|
|
<para>
|
|
|
|
Use <command>\lo_list</command> to find out the large object's <acronym>OID</acronym>.
|
|
|
|
</para>
|
|
|
|
</tip>
|
|
|
|
<note>
|
|
|
|
<para>
|
2000-01-14 23:18:03 +01:00
|
|
|
See the description of the <envar>LO_TRANSACTION</envar> variable for
|
1999-11-04 23:07:57 +01:00
|
|
|
important information concerning all large object operations.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\o</literal> [ {<replaceable class="parameter">filename</replaceable> | <literal>|</literal><replaceable class="parameter">command</replaceable>} ]</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Saves future query results to the file
|
|
|
|
<replaceable class="parameter">filename</replaceable> or pipe future
|
|
|
|
results into a separate Unix shell to execute
|
|
|
|
<replaceable class="parameter">command</replaceable>.
|
|
|
|
If no arguments are specified, the query output will be reset to
|
|
|
|
<filename>stdout</filename>.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2000-01-14 23:18:03 +01:00
|
|
|
<quote>Query results</quote> includes all tables, command responses,
|
|
|
|
and notices obtained
|
1999-11-04 23:07:57 +01:00
|
|
|
from the database server, as well as output of various backslash
|
2000-01-14 23:18:03 +01:00
|
|
|
commands that query the database (such as <command>\d</command>),
|
|
|
|
but not error messages.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<tip>
|
|
|
|
<para>
|
|
|
|
To intersperse text output in between query results, use <command>\qecho</command>.
|
|
|
|
</para>
|
|
|
|
</tip>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\p</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Print the current query buffer to the standard output.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\pset</literal> <replaceable class="parameter">parameter</replaceable> [ <replaceable class="parameter">value</replaceable> ]</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This command sets options affecting the output of query result tables.
|
|
|
|
<replaceable class="parameter">parameter</replaceable> describes which option
|
|
|
|
is to be set. The semantics of <replaceable class="parameter">value</replaceable>
|
|
|
|
depend thereon.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Adjustable printing options are:
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>format</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Sets the output format to one of <literal>unaligned</literal>,
|
|
|
|
<literal>aligned</literal>, <literal>html</literal>, or <literal>latex</literal>.
|
|
|
|
Unique abbreviations are allowed. (That would mean one letter is enough.)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<quote>Unaligned</quote> writes all fields of a tuple on a line, separated
|
|
|
|
by the currently active field separator. This is intended to create output
|
|
|
|
that might be intended to be read in by other programs (tab-separated,
|
|
|
|
comma-separated).
|
|
|
|
<quote>Aligned</quote> mode is the
|
|
|
|
standard, human-readable, nicely formatted text output that is default.
|
|
|
|
The <quote><acronym>HTML</acronym></quote> and <quote>LaTeX</quote> modes
|
|
|
|
put out tables that are intended to be included in documents using the
|
|
|
|
respective mark-up language. They are not complete documents! (This might
|
|
|
|
not be so dramatic in <acronym>HTML</acronym>, but in LaTeX you must
|
|
|
|
have a complete document wrapper.)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>border</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The second argument must be a number. In general, the higher the number
|
|
|
|
the more borders and lines the tables will have, but this depends on
|
|
|
|
the particular format. In <acronym>HTML</acronym> mode, this will
|
|
|
|
translate directly into the <literal>border=...</literal> attribute, in
|
|
|
|
the others only values 0 (no border), 1 (internal dividing lines), and 2
|
|
|
|
(table frame) make sense.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>expanded</literal> (or <literal>x</literal>)</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Toggles between regular and expanded format. When expanded format is
|
|
|
|
enabled, all output has two columns with the field name on the left
|
|
|
|
and the data on the right. This mode is useful if the data wouldn't
|
|
|
|
fit on the screen in the normal <quote>horizontal</quote> mode.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2000-03-21 02:52:12 +01:00
|
|
|
Expanded mode is supported by all four output modes.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>null</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The second argument is a string that should be printed whenever a field
|
|
|
|
is null. The default is not to print anything, which can easily be mistaken
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
for, say, an empty string. Thus, one might choose to write
|
2000-05-09 20:55:56 +02:00
|
|
|
<literal>\pset null '(null)'</literal>.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>fieldsep</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Specifies the field separator to be used in unaligned output mode. That way
|
|
|
|
one can create, for example, tab- or comma-separated output, which other
|
|
|
|
programs might prefer. To set a tab as field separator, type
|
2000-05-09 20:55:56 +02:00
|
|
|
<literal>\pset fieldsep '\t'</literal>. The default field separator is
|
|
|
|
<literal>'|'</literal> (a <quote>pipe</quote> symbol).
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
2000-01-19 00:30:24 +01:00
|
|
|
<varlistentry>
|
|
|
|
<term><literal>recordsep</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Specifies the record (line) separator to use in unaligned output mode. The default
|
|
|
|
is a newline character.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<varlistentry>
|
|
|
|
<term><literal>tuples_only</literal> (or <literal>t</literal>)</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Toggles between tuples only and full display. Full display may show
|
|
|
|
extra information such as column headers, titles, and various footers.
|
|
|
|
In tuples only mode, only actual table data is shown.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>title</literal> [ <replaceable class="parameter">text</replaceable> ]</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Sets the table title for any subsequently printed tables. This can be
|
|
|
|
used to give your output descriptive tags. If no argument is given,
|
|
|
|
the title is unset.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<note>
|
|
|
|
<para>
|
|
|
|
This formerly only affected <acronym>HTML</acronym> mode. You can now
|
|
|
|
set titles in any output format.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>tableattr</literal> (or <literal>T</literal>) [ <replaceable class="parameter">text</replaceable> ]</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-03-21 02:52:12 +01:00
|
|
|
Allows you to specify any attributes to be placed inside the <acronym>HTML</acronym>
|
1999-11-04 23:07:57 +01:00
|
|
|
<sgmltag>table</sgmltag> tag. This could for example be
|
|
|
|
<literal>cellpadding</literal> or <literal>bgcolor</literal>. Note that you
|
|
|
|
probably don't want to specify <literal>border</literal> here, as
|
|
|
|
that is already taken care of by <literal>\pset border</literal>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>pager</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Toggles the list of a pager to do table output. If the environment variable
|
|
|
|
<envar>PAGER</envar> is set, the output is piped to the specified program.
|
2000-01-14 23:18:03 +01:00
|
|
|
Otherwise <filename>more</filename> is used.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
In any case, <application>psql</application> only uses the pager if it
|
|
|
|
seems appropriate. That means among other things that the output is to
|
|
|
|
a terminal and that the table would normally not fit on the screen.
|
|
|
|
Because of the modular nature of the printing routines it is not always
|
|
|
|
possible to predict the number of lines that will actually be printed.
|
|
|
|
For that reason <application>psql</application> might not appear very
|
|
|
|
discriminating about when to use the pager and when not to.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
Illustrations on how these different formats look can be seen in
|
|
|
|
the <xref linkend="APP-PSQL-examples" endterm="APP-PSQL-examples-title"> section.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<tip>
|
|
|
|
<para>
|
|
|
|
There are various shortcut commands for <command>\pset</command>. See
|
|
|
|
<command>\a</command>, <command>\C</command>, <command>\H</command>,
|
|
|
|
<command>\t</command>, <command>\T</command>, and <command>\x</command>.
|
|
|
|
</para>
|
|
|
|
</tip>
|
|
|
|
|
|
|
|
<note>
|
|
|
|
<para>
|
|
|
|
It is an error to call <command>\pset</command> without arguments. In the future
|
|
|
|
this call might show the current status of all printing options.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\q</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Quit the <application>psql</application> program.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\qecho</literal> <replaceable class="parameter">text</replaceable> [ ... ] </term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This command is identical to <command>\echo</command> except that
|
|
|
|
all output will be written to the query output channel, as set by
|
|
|
|
<command>\o</command>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\r</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Resets (clears) the query buffer.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\s</literal> [ <replaceable class="parameter">filename</replaceable> ]</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Print or save the command line history to
|
|
|
|
<replaceable class="parameter">filename</replaceable>.
|
|
|
|
If <replaceable class="parameter">filename</replaceable> is omitted,
|
|
|
|
the history is written to the standard output.
|
|
|
|
This option is only available if <application>psql</application> is
|
|
|
|
configured to use the <acronym>GNU</acronym> history library.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<note>
|
|
|
|
<para>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
As of <application>psql</application> version 7.0 it is no longer
|
2000-03-21 02:52:12 +01:00
|
|
|
necessary to save the command history, since that will be done
|
|
|
|
automatically on program termination. The history is
|
|
|
|
also loaded automatically every time <application>psql</application>
|
1999-11-04 23:07:57 +01:00
|
|
|
starts up.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
2000-02-08 00:10:11 +01:00
|
|
|
<term><literal>\set</literal> [ <replaceable class="parameter">name</replaceable> [ <replaceable class="parameter">value</replaceable> [ ... ]]]</term>
|
1999-11-04 23:07:57 +01:00
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Sets the internal variable <replaceable class="parameter">name</replaceable>
|
2000-02-08 00:10:11 +01:00
|
|
|
to <replaceable class="parameter">value</replaceable> or, if more than one
|
|
|
|
value is given, to the concatenation of all of them. If no second argument
|
2000-03-21 02:52:12 +01:00
|
|
|
is given, the variable is just set with no value. To unset a variable, use
|
2000-01-14 23:18:03 +01:00
|
|
|
the <command>\unset</command> command.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
Valid variable names can contain characters, digits, and underscores.
|
|
|
|
See the section about <application>psql</application> variables for details.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2000-03-21 02:52:12 +01:00
|
|
|
Although you are welcome to set any variable to anything you want,
|
|
|
|
<application>psql</application> treats several variables as special.
|
1999-11-04 23:07:57 +01:00
|
|
|
They are documented in the section about variables.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<note>
|
|
|
|
<para>
|
|
|
|
This command is totally separate from the <acronym>SQL</acronym> command
|
|
|
|
<xref linkend="SQL-SET" endterm="SQL-SET-title">.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\t</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Toggles the display of output column name headings and row count footer.
|
|
|
|
This command is equivalent to <literal>\pset tuples_only</literal> and
|
|
|
|
is provided for convenience.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\T</literal> <replaceable class="parameter">table_options</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allows you to specify options to be placed within the <sgmltag>table</sgmltag>
|
|
|
|
tag in <acronym>HTML</acronym> tabular output mode. This command is
|
|
|
|
equivalent to <literal>\pset tableattr <replaceable class="parameter">table_options</replaceable></literal>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\w</literal> {<replaceable class="parameter">filename</replaceable> | <replaceable class="parameter">|command</replaceable>}</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Outputs the current query buffer to the file <replaceable class="parameter">filename</replaceable>
|
|
|
|
or pipes it to the Unix command <replaceable class="parameter">command</replaceable>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\x</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Toggles extended row format mode. As such it is equivalent to
|
|
|
|
<literal>\pset expanded</literal>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\z</literal> [ <replaceable class="parameter">pattern</replaceable> ]</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Produces a list of all tables in the database with their appropriate
|
|
|
|
access permissions listed. If an argument is given it is taken as a regular
|
|
|
|
expression which limits the listing to those tables which match it.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
test=> <userinput>\z</userinput>
|
|
|
|
Access permissions for database "test"
|
|
|
|
Relation | Access permissions
|
|
|
|
----------+-------------------------------------
|
|
|
|
my_table | {"=r","joe=arwR", "group staff=ar"}
|
|
|
|
(1 row )
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
Read this as follows:
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<literal>"=r"</literal>: <literal>PUBLIC</literal> has read
|
|
|
|
(<command>SELECT</command>) permission on the table.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<literal>"joe=arwR"</literal>: User <literal>joe</literal> has read,
|
|
|
|
write (<command>UPDATE</command>, <command>DELETE</command>),
|
|
|
|
<quote>append</quote> (<command>INSERT</command>) permissions,
|
|
|
|
and permission to create rules on the table.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<literal>"group staff=ar"</literal>: Group <literal>staff</literal>
|
|
|
|
has <command>SELECT</command> and <command>INSERT</command> permission.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The commands <xref linkend="SQL-GRANT" endterm="SQL-GRANT-title"> and
|
|
|
|
<xref linkend="SQL-REVOKE" endterm="SQL-REVOKE-title">
|
|
|
|
are used to set access permissions.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\!</literal> [ <replaceable class="parameter">command</replaceable> ]</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Escapes to a separate Unix shell or executes the Unix command
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<replaceable class="parameter">command</replaceable>. The arguments
|
2000-02-08 00:10:11 +01:00
|
|
|
are not further interpreted, the shell will see them as is.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>\?</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Get help information about the slash (<quote>\</quote>) commands.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
</variablelist>
|
|
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<refsect1 id="R1-APP-PSQL-3">
|
1999-06-14 09:37:05 +02:00
|
|
|
<refsect1info>
|
1999-11-04 23:07:57 +01:00
|
|
|
<date>1998-09-26</date>
|
1999-06-14 09:37:05 +02:00
|
|
|
</refsect1info>
|
1999-11-04 23:07:57 +01:00
|
|
|
|
|
|
|
<title>Command-line Options</title>
|
|
|
|
|
1999-05-20 07:40:27 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
If so configured, <application>psql</application> understands both standard
|
2000-01-12 20:36:36 +01:00
|
|
|
Unix short options, and <acronym>GNU</acronym>-style long options. The latter
|
2000-01-14 23:18:03 +01:00
|
|
|
are not available on all systems.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<variablelist>
|
2000-02-13 22:45:15 +01:00
|
|
|
<varlistentry>
|
|
|
|
<term>-a, --echo-all</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Print all the lines to the screen as they are read. This is more useful for
|
|
|
|
script processing rather than interactive mode.
|
|
|
|
This is equivalent to setting the variable <envar>ECHO</envar> to <literal>all</literal>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-A, --no-align</term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Switches to unaligned output mode. (The default output mode is otherwise
|
|
|
|
aligned.)
|
1998-12-29 03:24:47 +01:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-c, --command <replaceable class="parameter">query</replaceable></term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Specifies that <application>psql</application>
|
|
|
|
is to execute one query string, <replaceable class="parameter">query</replaceable>,
|
2000-02-08 00:10:11 +01:00
|
|
|
and then exit. This is useful in shell scripts.
|
1998-12-29 03:24:47 +01:00
|
|
|
</para>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
<replaceable class="parameter">query</replaceable> must be either a query string
|
|
|
|
that is completely parseable by the backend (i.e., it contains no <application>psql</application>
|
|
|
|
specific features), or it is a single backslash command. Thus
|
|
|
|
you cannot mix <acronym>SQL</acronym> and <application>psql</application>
|
2000-03-21 02:52:12 +01:00
|
|
|
meta-commands. To achieve that, you could pipe the string into
|
|
|
|
<application>psql</application>, like this:
|
2000-02-08 00:10:11 +01:00
|
|
|
<literal>echo "\x \\ select * from foo;" | psql</literal>.
|
1998-12-29 03:24:47 +01:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-d, --dbname <replaceable class="parameter">dbname</replaceable></term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Specifies the name of the database to connect to. This is equivalent to specifying
|
|
|
|
<replaceable class="parameter">dbname</replaceable> as the first non-option
|
|
|
|
argument on the command line.
|
1998-12-29 03:24:47 +01:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
2000-02-13 22:45:15 +01:00
|
|
|
<term>-e, --echo-queries</term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
2000-02-13 22:45:15 +01:00
|
|
|
Show all queries that are sent to the backend.
|
|
|
|
This is equivalent to setting the variable <envar>ECHO</envar>
|
|
|
|
to <literal>queries</literal>.
|
1998-12-29 03:24:47 +01:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
2000-01-14 23:18:03 +01:00
|
|
|
<term>-E, --echo-hidden</term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
2000-03-21 02:52:12 +01:00
|
|
|
Echoes the actual queries generated by \d and other backslash commands.
|
1999-11-04 23:07:57 +01:00
|
|
|
You can use this if you wish to include similar functionality into
|
|
|
|
your own programs. This is equivalent to setting the variable
|
2000-01-14 23:18:03 +01:00
|
|
|
<envar>ECHO_HIDDEN</envar> from within <application>psql</application>.
|
1998-12-29 03:24:47 +01:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-f, --file <replaceable class="parameter">filename</replaceable></term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Use the file <replaceable class="parameter">filename</replaceable>
|
|
|
|
as the source of queries instead of reading queries interactively.
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
After the file is processed, <application>psql</application> terminates.
|
1999-11-04 23:07:57 +01:00
|
|
|
This in many ways equivalent to the internal command <command>\i</command>.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
2000-02-08 00:10:11 +01:00
|
|
|
<para>
|
|
|
|
Using this option is subtly different from writing
|
|
|
|
<literal>psql < <replaceable class="parameter">filename</replaceable></literal>.
|
|
|
|
In general, both will do what you expect, but using <literal>-f</literal>
|
|
|
|
enables some nice features such as error messages with line numbers.
|
|
|
|
There is also a slight chance that using this option will reduce
|
|
|
|
the startup overhead. On the other hand, the variant using the shell's
|
|
|
|
input redirection is (in theory) guaranteed to yield exactly the same
|
|
|
|
output that you would have gotten had you entered everything by hand.
|
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
2000-01-12 20:36:36 +01:00
|
|
|
<term>-F, --field-separator <replaceable class="parameter">separator</replaceable></term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Use <replaceable class="parameter">separator</replaceable> as the field separator.
|
|
|
|
This is equivalent to <command>\pset fieldsep</command> or <command>\f</command>.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-h, --host <replaceable class="parameter">hostname</replaceable></term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Specifies the host name of the machine on which the
|
|
|
|
<application>postmaster</application> is running.
|
|
|
|
Without this option, communication is performed using
|
|
|
|
local Unix domain sockets.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-H, --html</term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Turns on <acronym>HTML</acronym> tabular output. This is equivalent
|
|
|
|
to <literal>\pset format html</literal> or the <command>\H</command>
|
|
|
|
command.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-l, --list</term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Lists all available databases, then exits. Other non-connection options
|
|
|
|
are ignored. This is similar to the internal command <command>\list</command>.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
2000-01-12 20:36:36 +01:00
|
|
|
<term>-o, --output <replaceable class="parameter">filename</replaceable></term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Put all query output into file <replaceable class="parameter">filename</replaceable>.
|
|
|
|
This is equivalent to the command <command>\o</command>.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-p, --port <replaceable class="parameter">port</replaceable></term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Specifies the TCP/IP port or, by omission, the local Unix domain socket file
|
|
|
|
extension on which the <application>postmaster</application>
|
|
|
|
is listening for connections. Defaults to the value of the
|
|
|
|
<envar>PGPORT</envar> environment variable or, if not set, to the port
|
|
|
|
specified at compile time, usually 5432.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-P, --pset <replaceable class="parameter">assignment</replaceable></term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Allows you to specify printing options in the style of <command>\pset</command>
|
|
|
|
on the command line. Note that here you have to separate name and value with
|
|
|
|
an equal sign instead of a space. Thus to set the output format to LaTeX, you
|
|
|
|
could write <literal>-P format=latex</literal>.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-q</term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Specifies that <application>psql</application> should do its work quietly.
|
2000-01-12 20:36:36 +01:00
|
|
|
By default, it prints welcome messages and various informational output.
|
1999-11-04 23:07:57 +01:00
|
|
|
If this option is used, none of this happens. This is useful with the
|
|
|
|
<option>-c</option> option. Within <application>psql</application> you can
|
2000-01-14 23:18:03 +01:00
|
|
|
also set the <envar>QUIET</envar> variable to achieve the same effect.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
2000-02-08 00:10:11 +01:00
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>-R, --record-separator <replaceable class="parameter">separator</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Use <replaceable class="parameter">separator</replaceable> as the record separator.
|
|
|
|
This is equivalent to the <command>\pset recordsep</command> command.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-s, --single-step</term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Run in single-step mode. That means the user is prompted before each query
|
|
|
|
is sent to the backend, with the option to cancel execution as well.
|
|
|
|
Use this to debug scripts.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-S, --single-line</term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
2000-03-21 02:52:12 +01:00
|
|
|
Runs in single-line mode where a newline terminates a query, as a semicolon does.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<note>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
This mode is provided for those who insist on it, but you are not necessarily
|
|
|
|
encouraged to use it. In particular, if you mix <acronym>SQL</acronym> and
|
|
|
|
meta-commands on a line the order of execution might not always be clear to
|
2000-03-21 02:52:12 +01:00
|
|
|
the inexperienced user.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</note>
|
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-t, --tuples-only</term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Turn off printing of column names and result row count footers, etc.
|
2000-03-21 02:52:12 +01:00
|
|
|
It is completely equivalent to the <command>\t</command> meta-command.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-T, --table-attr <replaceable class="parameter">table_options</replaceable></term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Allows you to specify options to be placed within the <acronym>HTML</acronym>
|
|
|
|
<sgmltag>table</sgmltag> tag. See <command>\pset</command> for details.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-u</term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Makes <application>psql</application> prompt for the user name and password
|
|
|
|
before connecting to the database.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
This option is deprecated, as it is conceptually flawed. (Prompting for
|
|
|
|
a non-default user name and prompting for a password because the
|
|
|
|
backend requires it are really two different things.) You are encouraged
|
|
|
|
to look at the <option>-U</option> and <option>-W</option> options instead.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-U, --username <replaceable class="parameter">username</replaceable></term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Connects to the database as the user <replaceable class="parameter">username</replaceable>
|
2000-01-14 23:18:03 +01:00
|
|
|
instead of the default. (You must have permission to do so, of course.)
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-v, --variable, --set <replaceable class="parameter">assignment</replaceable></term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Performs a variable assignment, like the <command>\set</command> internal command.
|
|
|
|
Note that you must separate name and value, if any, by an equal sign on the command
|
2000-01-14 23:18:03 +01:00
|
|
|
line. To unset a variable, leave off the equal sign. These assignments are done
|
|
|
|
during a very early state of startup, so variables reserved for internal purposes
|
2000-03-21 02:52:12 +01:00
|
|
|
might get overwritten later.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
1999-11-04 23:07:57 +01:00
|
|
|
<term>-V, --version</term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
2000-01-12 20:36:36 +01:00
|
|
|
Shows the <application>psql</application> version.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
2000-01-14 23:18:03 +01:00
|
|
|
<term>-W, --password</term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
Requests that <application>psql</application> should prompt for a password
|
|
|
|
before connecting to a database. This will remain set for the entire
|
|
|
|
session, even if you change the database connection with the meta-command
|
|
|
|
<command>\connect</command>.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
As of version 7.0, <application>psql</application> automatically issues a
|
1999-11-04 23:07:57 +01:00
|
|
|
password prompt whenever the backend requests password authentication.
|
2000-07-21 19:58:49 +02:00
|
|
|
Because this is currently based on a hack, the automatic
|
1999-11-04 23:07:57 +01:00
|
|
|
recognition might mysteriously fail, hence this option to force a prompt.
|
|
|
|
If no password prompt is issued and the backend requires password authentication
|
2000-01-14 23:18:03 +01:00
|
|
|
the connection attempt will fail.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
2000-01-14 23:18:03 +01:00
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
1999-05-20 07:40:27 +02:00
|
|
|
|
2000-01-14 23:18:03 +01:00
|
|
|
<varlistentry>
|
|
|
|
<term>-x, --expanded</term>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
2000-01-14 23:18:03 +01:00
|
|
|
Turns on extended row format mode. This is equivalent to the command
|
|
|
|
<command>\x</command>.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
2000-03-01 22:10:05 +01:00
|
|
|
<varlistentry>
|
|
|
|
<term>-X, --no-psqlrc</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Do not read the startup file <filename>~/.psqlrc</filename>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
|
1999-06-14 09:37:05 +02:00
|
|
|
<varlistentry>
|
2000-01-14 23:18:03 +01:00
|
|
|
<term>-?, --help</term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
2000-01-14 23:18:03 +01:00
|
|
|
Shows help about <application>psql</application> command line arguments.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
</variablelist>
|
|
|
|
</para>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
</refsect1>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<refsect1 id="R1-APP-PSQL-4">
|
|
|
|
<refsect1info>
|
|
|
|
<date>1998-09-27</date>
|
|
|
|
</refsect1info>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<title>Advanced features</title>
|
|
|
|
|
|
|
|
<refsect2 id="APP-PSQL-variables">
|
|
|
|
<title id="APP-PSQL-variables-title">Variables</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<application>psql</application> provides variable substitution features
|
2000-02-08 00:10:11 +01:00
|
|
|
similar to common Unix command shells. This feature is new and not very
|
|
|
|
sophisticated, yet, but there are plans to expand it in the future.
|
|
|
|
Variables are simply name/value
|
1999-11-04 23:07:57 +01:00
|
|
|
pairs, where the value can be any string of any length. To set variables,
|
|
|
|
use the <application>psql</application> meta-command <command>\set</command>:
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
testdb=> <userinput>\set foo bar</userinput>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
sets the variable <quote>foo</quote> to the value <quote>bar</quote>. To retrieve
|
2000-02-08 00:10:11 +01:00
|
|
|
the content of the variable, precede the name with a colon and use it
|
1999-11-04 23:07:57 +01:00
|
|
|
as the argument of any slash command:
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
2000-02-08 00:10:11 +01:00
|
|
|
testdb=> <userinput>\echo :foo</userinput>
|
1999-11-04 23:07:57 +01:00
|
|
|
bar
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<note>
|
|
|
|
<para>
|
|
|
|
The arguments of <command>\set</command> are subject to the same substitution
|
|
|
|
rules as with other commands. Thus you can construct interesting references
|
2000-02-08 00:10:11 +01:00
|
|
|
such as <literal>\set :foo 'something'</literal> and get <quote>soft
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
links</quote> or <quote>variable variables</quote> of <productname>Perl</productname>
|
|
|
|
or <productname><acronym>PHP</acronym></productname> fame, respectively.
|
2000-05-12 02:54:53 +02:00
|
|
|
Unfortunately (or fortunately?), there is no way to do anything useful
|
2000-02-08 00:10:11 +01:00
|
|
|
with these constructs. On the
|
|
|
|
other hand, <literal>\set bar :foo</literal> is a perfectly valid way to copy
|
1999-11-04 23:07:57 +01:00
|
|
|
a variable.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
2000-02-08 00:10:11 +01:00
|
|
|
If you call <command>\set</command> without a second argument, the variable is simply
|
2000-01-14 23:18:03 +01:00
|
|
|
set, but has no value. To unset (or delete) a variable, use the command
|
|
|
|
<command>\unset</command>.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2000-01-14 23:18:03 +01:00
|
|
|
<application>psql</application>'s internal variable names can consist of
|
|
|
|
letters, numbers, and underscores in any order and any number of them.
|
1999-11-04 23:07:57 +01:00
|
|
|
A number of regular variables are treated specially by <application>psql</application>.
|
|
|
|
They indicate certain option settings that can be changed at runtime
|
2000-01-14 23:18:03 +01:00
|
|
|
by altering the value of the variable or represent some state of the application.
|
|
|
|
Although you can use these
|
1999-11-04 23:07:57 +01:00
|
|
|
variables for any other purpose, this is not recommended, as the
|
2000-01-14 23:18:03 +01:00
|
|
|
program behavior might grow really strange really quickly.
|
|
|
|
By convention, all specially treated variables consist of all upper-case letters
|
|
|
|
(and possibly numbers and underscores). To ensure maximum compatibility in the
|
|
|
|
future, avoid such variables.
|
|
|
|
A list of all specially treated variables follows.
|
1999-11-04 23:07:57 +01:00
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
2000-01-14 23:18:03 +01:00
|
|
|
<term><envar>DBNAME</envar></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The name of the database you are currently connected to. This is set everytime
|
|
|
|
you connect to a database (including program startup), but can be unset.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><envar>ECHO</envar></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-02-13 22:45:15 +01:00
|
|
|
If set to <quote><literal>all</literal></quote>, all lines entered or from a script
|
2000-01-14 23:18:03 +01:00
|
|
|
are written to the standard output before they
|
2000-02-13 22:45:15 +01:00
|
|
|
are parsed or executed. To specify this on program startup, use the switch
|
|
|
|
<option>-a</option>. If set to <quote><literal>queries</literal></quote>,
|
|
|
|
<application>psql</application> merely prints all queries as they are sent to the
|
|
|
|
backend. The option for this is <option>-e</option>.
|
2000-01-14 23:18:03 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><envar>ECHO_HIDDEN</envar></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
When this variable is set and a backslash command queries the database, the query
|
2000-03-27 19:14:43 +02:00
|
|
|
is first shown. This way you can study the <productname>Postgres</productname>
|
2000-01-14 23:18:03 +01:00
|
|
|
internals and provide similar functionality in your own programs. If you set the
|
|
|
|
variable to the value <quote>noexec</quote>, the queries are just shown but are
|
|
|
|
not actually sent to the backend and executed.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
2000-02-20 15:29:21 +01:00
|
|
|
<varlistentry>
|
|
|
|
<term><envar>ENCODING</envar></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The current client multibyte encoding. If you are not set up to use
|
|
|
|
multibyte characters, this variable will always contain
|
|
|
|
<quote>SQL_ASCII</quote>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<varlistentry>
|
2000-01-14 23:18:03 +01:00
|
|
|
<term><envar>HISTCONTROL</envar></term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-01-14 23:18:03 +01:00
|
|
|
If this variable is set to <literal>ignorespace</literal>, lines which begin with a
|
|
|
|
space are not entered into the history list. If set to a value of
|
|
|
|
<literal>ignoredups</literal>, lines matching the previous history line are not
|
|
|
|
entered. A value of <literal>ignoreboth</literal> combines the two
|
|
|
|
options. If unset, or if set to any other value than those above, all lines read
|
|
|
|
in interactive mode are saved on the history list.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
2000-01-14 23:18:03 +01:00
|
|
|
<note>
|
|
|
|
<para>
|
|
|
|
This feature was shamelessly plagiarized from <application>bash</application>.
|
|
|
|
</para>
|
|
|
|
</note>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2000-01-14 23:18:03 +01:00
|
|
|
<term><envar>HISTSIZE</envar></term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-01-14 23:18:03 +01:00
|
|
|
The number of commands to store in the command history.
|
|
|
|
The default value is 500.
|
|
|
|
</para>
|
|
|
|
<note>
|
|
|
|
<para>
|
|
|
|
This feature was shamelessly plagiarized from <application>bash</application>.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><envar>HOST</envar></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The database server host you are currently connected to. This is set everytime
|
|
|
|
you connect to a database (including program startup), but can be unset.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><envar>IGNOREEOF</envar></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
If unset, sending an EOF character (usually Control-D) to an interactive session of
|
|
|
|
<application>psql</application> will terminate the application.
|
|
|
|
If set to a numeric value, that many EOF characters are ignored before the application
|
|
|
|
terminates. If the variable is set but has no numeric value, the default is 10.
|
|
|
|
</para>
|
|
|
|
<note>
|
|
|
|
<para>
|
|
|
|
This feature was shamelessly plagiarized from <application>bash</application>.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><envar>LASTOID</envar></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The value of the last affected oid, as returned from an <command>INSERT</command>
|
|
|
|
or <command>lo_insert</command> commmand. This variable is only guaranteed to be
|
|
|
|
valid until after the result of the next <acronym>SQL</acronym> command has been
|
|
|
|
displayed.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2000-01-14 23:18:03 +01:00
|
|
|
<term><envar>LO_TRANSACTION</envar></term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-03-27 19:14:43 +02:00
|
|
|
If you use the <productname>Postgres</productname> large object
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
interface to specially store data that does not fit into one tuple,
|
|
|
|
all the operations must be contained in a transaction block. (See the
|
|
|
|
documentation of the large object interface for more information.) Since
|
2000-03-21 02:52:12 +01:00
|
|
|
<application>psql</application> has no way to tell if you already
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
have a transaction in progress when you call one of its internal
|
|
|
|
commands <command>\lo_export</command>, <command>\lo_import</command>,
|
|
|
|
<command>\lo_unlink</command> it must take some arbitrary action. This
|
|
|
|
action could either be to roll back any transaction that might already
|
|
|
|
be in progress, or to commit any such transaction, or to do nothing at
|
2000-03-21 02:52:12 +01:00
|
|
|
all. In the last case you must provide your own
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<command>BEGIN TRANSACTION</command>/<command>COMMIT</command> block or
|
|
|
|
the results will be unpredictable (usually resulting in the desired
|
2000-03-21 02:52:12 +01:00
|
|
|
action's not being performed in any case).
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
To choose what you want to do you set this variable to one of
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<quote>rollback</quote>, <quote>commit</quote>, or <quote>nothing</quote>.
|
|
|
|
The default is to roll back the transaction. If you just want to load one
|
|
|
|
or a few objects this is fine. However, if you intend to transfer many
|
|
|
|
large objects, it might be advisable to provide one explicit transaction
|
|
|
|
block around all commands.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
2000-02-10 21:08:58 +01:00
|
|
|
<varlistentry>
|
|
|
|
<term><envar>ON_ERROR_STOP</envar></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
By default, if non-interactive scripts encounter an error, such as a
|
|
|
|
malformed <acronym>SQL</acronym> query or internal meta-command,
|
2000-03-21 02:52:12 +01:00
|
|
|
processing continues. This has been the traditional behaviour of
|
2000-02-10 21:08:58 +01:00
|
|
|
<application>psql</application> but it is sometimes not desirable. If this variable
|
|
|
|
is set, script processing will immediately terminate. If the script was
|
|
|
|
called from another script it will terminate in the same fashion.
|
|
|
|
If the outermost script was not called from an interactive <application>psql</application>
|
|
|
|
session but rather using the <option>-f</option> option, <application>psql</application>
|
|
|
|
will return error code 3, to distinguish this case from fatal
|
|
|
|
error conditions (error code 1).
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<varlistentry>
|
2000-01-14 23:18:03 +01:00
|
|
|
<term><envar>PORT</envar></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-03-21 02:52:12 +01:00
|
|
|
The database server port to which you are currently connected. This is set every time
|
2000-01-14 23:18:03 +01:00
|
|
|
you connect to a database (including program startup), but can be unset.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><envar>PROMPT1</envar>, <envar>PROMPT2</envar>, <envar>PROMPT3</envar></term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
These specify what the prompt <application>psql</application> issues is
|
|
|
|
supposed to look like. See
|
|
|
|
<quote><xref linkend="APP-PSQL-prompting" endterm="APP-PSQL-prompting-title"></quote>
|
|
|
|
below.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2000-01-14 23:18:03 +01:00
|
|
|
<term><envar>QUIET</envar></term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This variable is equivalent to the command line option <option>-q</option>.
|
|
|
|
It is probably not too useful in interactive mode.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2000-01-14 23:18:03 +01:00
|
|
|
<term><envar>SINGLELINE</envar></term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-03-21 02:52:12 +01:00
|
|
|
This variable is set by the command line option <option>-S</option>. You
|
1999-11-04 23:07:57 +01:00
|
|
|
can unset or reset it at run time.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2000-01-14 23:18:03 +01:00
|
|
|
<term><envar>SINGLESTEP</envar></term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This variable is equivalent to the command line option <option>-s</option>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
2000-01-14 23:18:03 +01:00
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><envar>USER</envar></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-03-21 02:52:12 +01:00
|
|
|
The database user you are currently connected as. This is set every time
|
2000-01-14 23:18:03 +01:00
|
|
|
you connect to a database (including program startup), but can be unset.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
</variablelist>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</refsect2>
|
|
|
|
|
|
|
|
|
|
|
|
<refsect2 id="APP-PSQL-sql-interpol">
|
|
|
|
<title id="APP-PSQL-sql-interpol-title"><acronym>SQL</acronym> Interpolation</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
An additional useful feature of <application>psql</application> variables
|
|
|
|
is that you can substitute (<quote>interpolate</quote>) them into
|
2000-02-08 00:10:11 +01:00
|
|
|
regular <acronym>SQL</acronym> statements. The syntax for this is again to prepend
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
the variable name with a colon (<literal>:</literal>).
|
|
|
|
<programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
testdb=> <userinput>\set foo 'my_table'</userinput>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
testdb=> <userinput>SELECT * FROM :foo;</userinput>
|
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
would then query the table <literal>my_table</literal>. The value of the
|
|
|
|
variable is copied literally, so it can even contain unbalanced quotes or
|
|
|
|
backslash commands. You must make sure that it makes sense where you put it.
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
Variable interpolation will not be performed into quoted <acronym>SQL</acronym>
|
|
|
|
entities.
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
A popular application of this facility is to refer to the last inserted
|
|
|
|
<acronym>OID</acronym> in subsequent statement to build a foreign key
|
|
|
|
scenario.
|
|
|
|
Another possible use of this mechanism is to copy the contents of a file
|
1999-11-04 23:07:57 +01:00
|
|
|
into a field. First load the file into a variable and then proceed as above.
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
2000-02-08 00:10:11 +01:00
|
|
|
testdb=> <userinput>\set content '\'' `cat my_file.txt` '\''</userinput>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
testdb=> <userinput>INSERT INTO my_table VALUES (:content);</userinput>
|
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
One possible problem with this approach is that <filename>my_file.txt</filename>
|
|
|
|
might contain single quotes. These need to be escaped so that
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
they don't cause a syntax error when the third line is processed. This
|
1999-11-04 23:07:57 +01:00
|
|
|
could be done with the program <application>sed</application>:
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
testdb=> <userinput>\set content `sed -e "s/'/\\\\\\'/g" < my_file.txt`</userinput>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
Observe the correct number of backslashes (6)! You can resolve it this way: After
|
|
|
|
<application>psql</application> has parsed this line, it passes
|
|
|
|
<literal>sed -e "s/'/\\\'/g" < my_file.txt</literal> to the shell. The shell
|
|
|
|
will do it's own thing inside the double quotes and execute <filename>sed</filename>
|
|
|
|
with the arguments <literal>-e</literal> and <literal>s/'/\\'/g</literal>.
|
|
|
|
When <application>sed</application> parses this it will replace the two
|
|
|
|
backslashes with a single one and then do the substitution. Perhaps at
|
|
|
|
one point you thought it was great that all Unix commands use the same
|
|
|
|
escape character. And this is ignoring the fact that you might have to
|
|
|
|
escape all backslashes as well because <acronym>SQL</acronym> text constants
|
|
|
|
are also subject to certain interpretations. In that case you might
|
|
|
|
be better off preparing the file externally.
|
|
|
|
</para>
|
|
|
|
|
2000-01-14 23:18:03 +01:00
|
|
|
<para>
|
|
|
|
Since colons may legally appear in queries, the following rule applies: If the variable
|
2000-02-10 21:08:58 +01:00
|
|
|
is not set, the character sequence <quote>colon+name</quote> is not changed. In any
|
2000-01-14 23:18:03 +01:00
|
|
|
case you can escape a colon with a backslash to protect it from interpretation.
|
|
|
|
(The colon syntax for variables is standard <acronym>SQL</acronym> for embedded
|
|
|
|
query languages, such as <application>ecpg</application>. The colon syntax for
|
2000-03-27 19:14:43 +02:00
|
|
|
array slices and type casts are <productname>Postgres</productname> extensions,
|
2000-02-08 00:10:11 +01:00
|
|
|
hence the conflict.)
|
2000-01-14 23:18:03 +01:00
|
|
|
</para>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
</refsect2>
|
|
|
|
|
|
|
|
|
|
|
|
<refsect2 id="APP-PSQL-prompting">
|
|
|
|
<title id="APP-PSQL-prompting-title">Prompting</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The prompts <application>psql</application> issues can be customized to
|
2000-01-14 23:18:03 +01:00
|
|
|
your preference. The three variables <envar>PROMPT1</envar>, <envar>PROMPT2</envar>,
|
|
|
|
and <envar>PROMPT3</envar> contain strings and special escape sequences
|
1999-11-04 23:07:57 +01:00
|
|
|
that describe the appearance of the prompt. Prompt 1 is the normal prompt
|
|
|
|
that is issued when <application>psql</application> requests a new query.
|
|
|
|
Prompt 2 is issued when more input is expected during query input because
|
|
|
|
the query was not terminated with a semicolon or a quote was not closed.
|
|
|
|
Prompt 3 is issued when you run an <acronym>SQL</acronym> <command>COPY</command>
|
|
|
|
command and you are expected to type in the tuples on the terminal.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The value of the respective prompt variable is printed literally, except where
|
|
|
|
a percent sign (<quote>%</quote>) is encountered. Depending on the next
|
|
|
|
character, certain other text is substituted instead. Defined substitutions are:
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>%M</literal></term>
|
2000-03-11 14:56:24 +01:00
|
|
|
<listitem><para>The full hostname (with domainname) of the database server (or
|
|
|
|
<quote>localhost</quote> if hostname information is not available).</para></listitem>
|
1999-11-04 23:07:57 +01:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>%m</literal></term>
|
2000-03-21 02:52:12 +01:00
|
|
|
<listitem><para>The hostname of the database server, truncated after the
|
2000-01-19 00:30:24 +01:00
|
|
|
first dot.</para></listitem>
|
1999-11-04 23:07:57 +01:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>%></literal></term>
|
|
|
|
<listitem><para>The port number at which the database server is listening.</para></listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>%n</literal></term>
|
2000-01-19 00:30:24 +01:00
|
|
|
<listitem><para>The username you are connected as (not your local system
|
|
|
|
user name).</para></listitem>
|
1999-11-04 23:07:57 +01:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>%/</literal></term>
|
|
|
|
<listitem><para>The name of the current database.</para></listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>%~</literal></term>
|
2000-01-19 00:30:24 +01:00
|
|
|
<listitem><para>Like <literal>%/</literal>, but the output is <quote>~</quote>
|
|
|
|
(tilde) if the database is your default database.</para></listitem>
|
1999-11-04 23:07:57 +01:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>%#</literal></term>
|
2000-01-29 17:58:54 +01:00
|
|
|
<listitem><para>If the current user is a database superuser, then a
|
2000-01-19 00:30:24 +01:00
|
|
|
<quote>#</quote>, otherwise a <quote>></quote>.</para></listitem>
|
1999-11-04 23:07:57 +01:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>%R</literal></term>
|
|
|
|
<listitem><para>
|
2000-01-19 00:30:24 +01:00
|
|
|
In prompt 1 normally <quote>=</quote>, but <quote>^</quote> if in single-line
|
|
|
|
mode, and <quote>!</quote> if the session is disconnected from the database
|
|
|
|
(which can happen if <command>\connect</command> fails). In prompt 2 the
|
|
|
|
sequence is replaced by <quote>-</quote>, <quote>*</quote>, a single quote,
|
|
|
|
or a double quote, depending on whether <application>psql</application>
|
|
|
|
expects more input because the query wasn't terminated yet, because you are
|
|
|
|
inside a <literal>/* ... */</literal> comment, or because you are inside
|
|
|
|
a quote. In prompt 3 the sequence doesn't resolve to anything.</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>%</literal><replaceable class="parameter">digits</replaceable></term>
|
|
|
|
<listitem><para>
|
2000-01-19 00:30:24 +01:00
|
|
|
If <replaceable class="parameter">digits</replaceable> starts with
|
|
|
|
<literal>0x</literal> the rest of the characters are interpreted at a
|
|
|
|
hexadecimal digit and the character with the corresponding code is
|
|
|
|
subsituted. If the first digit is <literal>0</literal> the characters are
|
|
|
|
interpreted as on octal number and the corresponding character is
|
|
|
|
substituted. Otherwise a decimal number is assumed.</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2000-02-08 00:10:11 +01:00
|
|
|
<term><literal>%:</literal><replaceable class="parameter">name</replaceable><literal>:</literal></term>
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem><para>
|
2000-02-10 21:08:58 +01:00
|
|
|
The value of the <application>psql</application>, variable <replaceable
|
|
|
|
class="parameter">name</replaceable>. See the section
|
1999-11-04 23:07:57 +01:00
|
|
|
<quote><xref linkend="APP-PSQL-variables" endterm="APP-PSQL-variables-title"></quote>
|
|
|
|
for details.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>%`</literal><replaceable class="parameter">command</replaceable><literal>`</literal></term>
|
|
|
|
<listitem><para>
|
|
|
|
The output of <replaceable class="parameter">command</replaceable>, similar to
|
|
|
|
ordinary <quote>back-tick</quote> substitution.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
</variablelist>
|
|
|
|
|
|
|
|
To insert a percent sign into your prompt, write <literal>%%</literal>. The
|
|
|
|
default prompts are equivalent to <literal>'%/%R%# '</literal> for prompts 1
|
|
|
|
and 2, and <literal>'>> '</literal> for prompt 3.
|
|
|
|
</para>
|
|
|
|
|
2000-01-14 23:18:03 +01:00
|
|
|
<note>
|
|
|
|
<para>
|
|
|
|
This feature was shamelessly plagiarized from <application>tcsh</application>.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
</refsect2>
|
|
|
|
|
2000-01-14 23:18:03 +01:00
|
|
|
<refsect2 id="APP-PSQL-MISC">
|
|
|
|
<title id="APP-PSQL-MISC-title">Miscellaneous</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<application>psql</application> returns 0 to the shell if it finished normally,
|
|
|
|
1 if a fatal error of its own (out of memory, file not found) occurs, 2 if the
|
|
|
|
connection to the backend went bad and the session is not interactive, and 3 if
|
2000-02-10 21:08:58 +01:00
|
|
|
an error occurred in a script and the variable <envar>ON_ERROR_STOP</envar> was
|
2000-01-14 23:18:03 +01:00
|
|
|
set.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2000-03-01 22:10:05 +01:00
|
|
|
Before starting up, <application>psql</application> attempts
|
2000-01-29 17:58:54 +01:00
|
|
|
to read and execute commands from the file <filename>$HOME/.psqlrc</filename>. It
|
|
|
|
could be used to set up the client or the server to taste (using the <command>\set
|
|
|
|
</command> and <command>SET</command> commands).
|
2000-01-14 23:18:03 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
</refsect2>
|
|
|
|
|
|
|
|
<refsect2>
|
|
|
|
<title><acronym>GNU</acronym> readline</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<application>psql</application> supports the readline and history libraries for
|
2000-02-08 00:10:11 +01:00
|
|
|
convenient line editing and retrieval. The command history is stored in a file
|
2000-01-29 17:58:54 +01:00
|
|
|
named <filename>.psql_history</filename> in your home directory and is reloaded when
|
2000-01-14 23:18:03 +01:00
|
|
|
<application>psql</application> starts up.
|
|
|
|
Tab-completion is also supported, although
|
|
|
|
the completion logic makes no claim to be an <acronym>SQL</acronym> parser.
|
|
|
|
When available, <application>psql</application> is automatically built to use these
|
2000-02-08 00:10:11 +01:00
|
|
|
features. If for some reason you do not like the tab completion, you can turn if off
|
|
|
|
by putting this in a file named <filename>.inputrc</filename> in your
|
|
|
|
home directory:
|
|
|
|
<programlisting>
|
|
|
|
$if psql
|
|
|
|
set disable-completion on
|
|
|
|
$endif
|
|
|
|
</programlisting>
|
|
|
|
(This is not a <application>psql</application> but a <application>readline</application>
|
|
|
|
feature. Read its documentation for further details.)
|
2000-01-14 23:18:03 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
If you have the readline library installed but <application>psql</application>
|
2000-03-27 19:14:43 +02:00
|
|
|
does not seem to use it, you must make sure that <productname>Postgres</productname>'s
|
2000-01-14 23:18:03 +01:00
|
|
|
top-level <filename>configure</filename> script finds it. <filename>configure</filename>
|
|
|
|
needs to find both the library <filename>libreadline.a</filename>
|
2000-03-01 22:10:05 +01:00
|
|
|
(or a shared library equivalent)
|
2000-01-14 23:18:03 +01:00
|
|
|
<emphasis>and</emphasis> the header files <filename>readline.h</filename> and
|
|
|
|
<filename>history.h</filename> (or <filename>readline/readline.h</filename> and
|
|
|
|
<filename>readline/history.h</filename>) in appropriate directories. If
|
|
|
|
you have the library and header files installed in an obscure place you
|
|
|
|
must tell <filename>configure</filename> about them, for example:
|
|
|
|
<programlisting>
|
2000-02-08 00:10:11 +01:00
|
|
|
$ ./configure --with-includes=/opt/gnu/include --with-libs=/opt/gnu/lib ...
|
2000-01-14 23:18:03 +01:00
|
|
|
</programlisting>
|
|
|
|
Then you have to recompile <application>psql</application> (not necessarily
|
|
|
|
the entire code tree).
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The <acronym>GNU</acronym> readline library can be obtained from the <acronym>GNU</acronym>
|
|
|
|
project's <acronym>FTP</acronym> server at <ulink URL="ftp://ftp.gnu.org">ftp://ftp.gnu.org</ulink>.
|
|
|
|
</para>
|
|
|
|
</refsect2>
|
|
|
|
|
|
|
|
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
|
|
|
|
<refsect1 id="APP-PSQL-examples">
|
|
|
|
<title id="APP-PSQL-examples-title">Examples</title>
|
|
|
|
|
|
|
|
<note>
|
|
|
|
<para>
|
|
|
|
This section only shows a few examples specific to <application>psql</application>.
|
|
|
|
If you want to learn <acronym>SQL</acronym> or get familiar with
|
2000-03-27 19:14:43 +02:00
|
|
|
<productname>Postgres</productname>, you might wish to read the Tutorial that
|
1999-11-04 23:07:57 +01:00
|
|
|
is included in the distribution.
|
|
|
|
</para>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The first example shows how to spread a query over several lines of input.
|
2000-07-21 19:58:49 +02:00
|
|
|
Notice the changing prompt:
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
testdb=> <userinput>CREATE TABLE my_table (</userinput>
|
2000-05-09 20:55:56 +02:00
|
|
|
testdb(> <userinput> first integer not null default 0,</userinput>
|
|
|
|
testdb(> <userinput> second text</userinput>
|
1999-11-04 23:07:57 +01:00
|
|
|
testdb-> <userinput>);</userinput>
|
|
|
|
CREATE
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
Now look at the table definition again:
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
testdb=> <userinput>\d my_table</userinput>
|
2000-01-29 17:58:54 +01:00
|
|
|
Table "my_table"
|
|
|
|
Attribute | Type | Modifier
|
|
|
|
-----------+---------+--------------------
|
|
|
|
first | integer | not null default 0
|
|
|
|
second | text |
|
1999-11-04 23:07:57 +01:00
|
|
|
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
At this point you decide to change the prompt to something more
|
|
|
|
interesting:
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
2000-02-08 00:10:11 +01:00
|
|
|
testdb=> <userinput>\set PROMPT1 '%n@%m %~%R%# '</userinput>
|
1999-11-04 23:07:57 +01:00
|
|
|
peter@localhost testdb=>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
Let's assume you have filled the table with data and want to take a look at it:
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
peter@localhost testdb=> SELECT * FROM my_table;
|
|
|
|
first | second
|
|
|
|
-------+--------
|
|
|
|
1 | one
|
|
|
|
2 | two
|
|
|
|
3 | three
|
|
|
|
4 | four
|
|
|
|
(4 rows)
|
|
|
|
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
Notice how the int4 colums in right aligned while the text column in left aligned.
|
|
|
|
You can make this table look differently by using the <command>\pset</command>
|
2000-07-21 19:58:49 +02:00
|
|
|
command:
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
peter@localhost testdb=> <userinput>\pset border 2</userinput>
|
|
|
|
Border style is 2.
|
|
|
|
peter@localhost testdb=> <userinput>SELECT * FROM my_table;</userinput>
|
|
|
|
+-------+--------+
|
|
|
|
| first | second |
|
|
|
|
+-------+--------+
|
|
|
|
| 1 | one |
|
|
|
|
| 2 | two |
|
|
|
|
| 3 | three |
|
|
|
|
| 4 | four |
|
|
|
|
+-------+--------+
|
|
|
|
(4 rows)
|
|
|
|
|
|
|
|
peter@localhost testdb=> <userinput>\pset border 0</userinput>
|
|
|
|
Border style is 0.
|
|
|
|
peter@localhost testdb=> <userinput>SELECT * FROM my_table;</userinput>
|
|
|
|
first second
|
|
|
|
----- ------
|
|
|
|
1 one
|
|
|
|
2 two
|
|
|
|
3 three
|
|
|
|
4 four
|
|
|
|
(4 rows)
|
|
|
|
|
|
|
|
peter@localhost testdb=> <userinput>\pset border 1</userinput>
|
|
|
|
Border style is 1.
|
|
|
|
peter@localhost testdb=> <userinput>\pset format unaligned</userinput>
|
|
|
|
Output format is unaligned.
|
|
|
|
peter@localhost testdb=> <userinput>\pset fieldsep ","</userinput>
|
|
|
|
Field separator is ",".
|
|
|
|
peter@localhost testdb=> <userinput>\pset tuples_only</userinput>
|
|
|
|
Showing only tuples.
|
|
|
|
peter@localhost testdb=> <userinput>SELECT second, first FROM my_table;</userinput>
|
|
|
|
one,1
|
|
|
|
two,2
|
|
|
|
three,3
|
|
|
|
four,4
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
Alternatively, use the short commands:
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
peter@localhost testdb=> <userinput>\a \t \x</userinput>
|
|
|
|
Output format is aligned.
|
|
|
|
Tuples only is off.
|
|
|
|
Expanded display is on.
|
|
|
|
peter@localhost testdb=> <userinput>SELECT * FROM my_table;</userinput>
|
|
|
|
-[ RECORD 1 ]-
|
|
|
|
first | 1
|
|
|
|
second | one
|
|
|
|
-[ RECORD 2 ]-
|
|
|
|
first | 2
|
|
|
|
second | two
|
|
|
|
-[ RECORD 3 ]-
|
|
|
|
first | 3
|
|
|
|
second | three
|
|
|
|
-[ RECORD 4 ]-
|
|
|
|
first | 4
|
|
|
|
second | four
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
|
|
|
|
<refsect1>
|
|
|
|
<refsect1info>
|
|
|
|
<date>1999-10-27</date>
|
|
|
|
</refsect1info>
|
|
|
|
|
|
|
|
<title>Appendix</title>
|
|
|
|
|
|
|
|
<refsect2>
|
|
|
|
<title>Bugs and Issues</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
1999-11-04 23:07:57 +01:00
|
|
|
In some earlier life <application>psql</application> allowed the first
|
|
|
|
argument to start directly after the (single-letter) command. For
|
|
|
|
compatibility this is still supported to some extent but I am not
|
|
|
|
going to explain the details here as this use is discouraged. But
|
|
|
|
if you get strange messages, keep this in mind. For example
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
<programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
testdb=> <userinput>\foo</userinput>
|
|
|
|
Field separator is "oo".
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
</programlisting>
|
1999-11-04 23:07:57 +01:00
|
|
|
is perhaps not what one would expect.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
<listitem>
|
1999-06-14 09:37:05 +02:00
|
|
|
<para>
|
2000-01-14 23:18:03 +01:00
|
|
|
<application>psql</application> only works smootly with servers of the
|
|
|
|
same version. That does not mean other combinations will fail outright,
|
|
|
|
but subtle and not-so-subtle problems might come up.
|
1999-05-20 07:40:27 +02:00
|
|
|
</para>
|
1999-11-04 23:07:57 +01:00
|
|
|
</listitem>
|
* Includes tab completion. It's not magic, but it's very cool. At any
rate
it's better than what used to be there.
* Does proper SQL "host variable" substitution as pointed out by Andreas
Zeugwetter (thanks): select * from :foo; Also some changes in how ':'
and ';' are treated (escape with \ to send to backend). This does
_not_
affect the '::' cast operator, but perhaps others that contain : or ;
(but there are none right now).
* To show description with a <something> listing, append '?' to command
name, e.g., \df?. This seemed to be the convenient and logical
solution.
Or append a '+' to see more useless information, e.g., \df+.
* Fixed fflush()'ing bug pointed out by Jan during the regression test
discussion.
* Added LastOid variable. This ought to take care of TODO item "Add a
function to return the last inserted oid, for use in psql scripts"
(under CLIENTS)
E.g.,
insert into foo values(...);
insert into bar values(..., :LastOid);
\echo $LastOid
* \d command shows constraints, rules, and triggers defined on the table
(in addition to indices)
* Various fixes, optimizations, corrections
* Documentation update as well
Note: This now requires snprintf(), which, if necessary, is taken from
src/backend/port. This is certainly a little weird, but it should
suffice
until a source tree cleanup is done.
Enjoy.
--
Peter Eisentraut Sernanders väg 10:115
1999-11-26 05:24:17 +01:00
|
|
|
|
2000-03-01 22:10:05 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Pressing Control-C during a <quote>copy in</quote> (data sent to the
|
|
|
|
server) doesn't show the most ideal of behaviours. If you get a message
|
|
|
|
such as <quote>PQexec: you gotta get out of a COPY state yourself</quote>,
|
|
|
|
simply reset the connection by entering <literal>\c - -</literal>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
1999-11-04 23:07:57 +01:00
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</refsect2>
|
|
|
|
|
|
|
|
</refsect1>
|
|
|
|
|
1998-10-15 07:47:04 +02:00
|
|
|
</refentry>
|
1999-05-20 07:40:27 +02:00
|
|
|
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
|
|
Local variables:
|
|
|
|
mode: sgml
|
|
|
|
sgml-omittag:nil
|
|
|
|
sgml-shorttag:t
|
|
|
|
sgml-minimize-attributes:nil
|
|
|
|
sgml-always-quote-attributes:t
|
|
|
|
sgml-indent-step:1
|
|
|
|
sgml-indent-data:t
|
|
|
|
sgml-parent-document:nil
|
|
|
|
sgml-default-dtd-file:"../reference.ced"
|
|
|
|
sgml-exposed-tags:nil
|
1999-07-06 19:16:42 +02:00
|
|
|
sgml-local-catalogs:"/usr/lib/sgml/catalog"
|
1999-05-20 07:40:27 +02:00
|
|
|
sgml-local-ecat-files:nil
|
|
|
|
End:
|
|
|
|
-->
|