mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-06 11:19:20 +02:00
953c64e0f6
This follows the American format, https://jakubmarian.com/comma-after-i-e-and-e-g/. There is no intention of requiring this format for future text, but making existing text consistent every few years makes sense. Discussion: https://postgr.es/m/20200825183619.GA22369@momjian.us Backpatch-through: 9.5
1026 lines
36 KiB
Plaintext
1026 lines
36 KiB
Plaintext
<!--
|
|
doc/src/sgml/ref/pg_restore.sgml
|
|
PostgreSQL documentation
|
|
-->
|
|
|
|
<refentry id="app-pgrestore">
|
|
<indexterm zone="app-pgrestore">
|
|
<primary>pg_restore</primary>
|
|
</indexterm>
|
|
|
|
<refmeta>
|
|
<refentrytitle><application>pg_restore</application></refentrytitle>
|
|
<manvolnum>1</manvolnum>
|
|
<refmiscinfo>Application</refmiscinfo>
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>pg_restore</refname>
|
|
|
|
<refpurpose>
|
|
restore a <productname>PostgreSQL</productname> database from an
|
|
archive file created by <application>pg_dump</application>
|
|
</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsynopsisdiv>
|
|
<cmdsynopsis>
|
|
<command>pg_restore</command>
|
|
<arg rep="repeat"><replaceable>connection-option</replaceable></arg>
|
|
<arg rep="repeat"><replaceable>option</replaceable></arg>
|
|
<arg choice="opt"><replaceable>filename</replaceable></arg>
|
|
</cmdsynopsis>
|
|
</refsynopsisdiv>
|
|
|
|
|
|
<refsect1 id="app-pgrestore-description">
|
|
<title>Description</title>
|
|
|
|
<para>
|
|
<application>pg_restore</application> is a utility for restoring a
|
|
<productname>PostgreSQL</productname> database from an archive
|
|
created by <xref linkend="app-pgdump"/> in one of the non-plain-text
|
|
formats. It will issue the commands necessary to reconstruct the
|
|
database to the state it was in at the time it was saved. The
|
|
archive files also allow <application>pg_restore</application> to
|
|
be selective about what is restored, or even to reorder the items
|
|
prior to being restored. The archive files are designed to be
|
|
portable across architectures.
|
|
</para>
|
|
|
|
<para>
|
|
<application>pg_restore</application> can operate in two modes.
|
|
If a database name is specified, <application>pg_restore</application>
|
|
connects to that database and restores archive contents directly into
|
|
the database. Otherwise, a script containing the SQL
|
|
commands necessary to rebuild the database is created and written
|
|
to a file or standard output. This script output is equivalent to
|
|
the plain text output format of <application>pg_dump</application>.
|
|
Some of the options controlling the output are therefore analogous to
|
|
<application>pg_dump</application> options.
|
|
</para>
|
|
|
|
<para>
|
|
Obviously, <application>pg_restore</application> cannot restore information
|
|
that is not present in the archive file. For instance, if the
|
|
archive was made using the <quote>dump data as
|
|
<command>INSERT</command> commands</quote> option,
|
|
<application>pg_restore</application> will not be able to load the data
|
|
using <command>COPY</command> statements.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 id="app-pgrestore-options">
|
|
<title>Options</title>
|
|
|
|
<para>
|
|
<application>pg_restore</application> accepts the following command
|
|
line arguments.
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><replaceable class="parameter">filename</replaceable></term>
|
|
<listitem>
|
|
<para>
|
|
Specifies the location of the archive file (or directory, for a
|
|
directory-format archive) to be restored.
|
|
If not specified, the standard input is used.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-a</option></term>
|
|
<term><option>--data-only</option></term>
|
|
<listitem>
|
|
<para>
|
|
Restore only the data, not the schema (data definitions).
|
|
Table data, large objects, and sequence values are restored,
|
|
if present in the archive.
|
|
</para>
|
|
|
|
<para>
|
|
This option is similar to, but for historical reasons not identical
|
|
to, specifying <option>--section=data</option>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-c</option></term>
|
|
<term><option>--clean</option></term>
|
|
<listitem>
|
|
<para>
|
|
Clean (drop) database objects before recreating them.
|
|
(Unless <option>--if-exists</option> is used,
|
|
this might generate some harmless error messages, if any objects
|
|
were not present in the destination database.)
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-C</option></term>
|
|
<term><option>--create</option></term>
|
|
<listitem>
|
|
<para>
|
|
Create the database before restoring into it.
|
|
If <option>--clean</option> is also specified, drop and
|
|
recreate the target database before connecting to it.
|
|
</para>
|
|
|
|
<para>
|
|
With <option>--create</option>, <application>pg_restore</application>
|
|
also restores the database's comment if any, and any configuration
|
|
variable settings that are specific to this database, that is,
|
|
any <command>ALTER DATABASE ... SET ...</command>
|
|
and <command>ALTER ROLE ... IN DATABASE ... SET ...</command>
|
|
commands that mention this database.
|
|
Access privileges for the database itself are also restored,
|
|
unless <option>--no-acl</option> is specified.
|
|
</para>
|
|
|
|
<para>
|
|
When this option is used, the database named with <option>-d</option>
|
|
is used only to issue the initial <command>DROP DATABASE</command> and
|
|
<command>CREATE DATABASE</command> commands. All data is restored into the
|
|
database name that appears in the archive.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-d <replaceable class="parameter">dbname</replaceable></option></term>
|
|
<term><option>--dbname=<replaceable class="parameter">dbname</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Connect to database <replaceable
|
|
class="parameter">dbname</replaceable> and restore directly
|
|
into the database.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-e</option></term>
|
|
<term><option>--exit-on-error</option></term>
|
|
<listitem>
|
|
<para>
|
|
Exit if an error is encountered while sending SQL commands to
|
|
the database. The default is to continue and to display a count of
|
|
errors at the end of the restoration.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-f <replaceable>filename</replaceable></option></term>
|
|
<term><option>--file=<replaceable>filename</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Specify output file for generated script, or for the listing
|
|
when used with <option>-l</option>. Use <literal>-</literal>
|
|
for <systemitem>stdout</systemitem>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-F <replaceable class="parameter">format</replaceable></option></term>
|
|
<term><option>--format=<replaceable class="parameter">format</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Specify format of the archive. It is not necessary to specify
|
|
the format, since <application>pg_restore</application> will
|
|
determine the format automatically. If specified, it can be
|
|
one of the following:
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>c</literal></term>
|
|
<term><literal>custom</literal></term>
|
|
<listitem>
|
|
<para>
|
|
The archive is in the custom format of
|
|
<application>pg_dump</application>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>d</literal></term>
|
|
<term><literal>directory</literal></term>
|
|
<listitem>
|
|
<para>
|
|
The archive is a directory archive.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>t</literal></term>
|
|
<term><literal>tar</literal></term>
|
|
<listitem>
|
|
<para>
|
|
The archive is a <command>tar</command> archive.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-I <replaceable class="parameter">index</replaceable></option></term>
|
|
<term><option>--index=<replaceable class="parameter">index</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Restore definition of named index only. Multiple indexes
|
|
may be specified with multiple <option>-I</option> switches.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-j <replaceable class="parameter">number-of-jobs</replaceable></option></term>
|
|
<term><option>--jobs=<replaceable class="parameter">number-of-jobs</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Run the most time-consuming steps
|
|
of <application>pg_restore</application> — those that load data,
|
|
create indexes, or create constraints — concurrently, using up
|
|
to <replaceable class="parameter">number-of-jobs</replaceable>
|
|
concurrent sessions. This option can dramatically reduce the time
|
|
to restore a large database to a server running on a
|
|
multiprocessor machine. This option is ignored when emitting a script
|
|
rather than connecting directly to a database server.
|
|
</para>
|
|
|
|
<para>
|
|
Each job is one process or one thread, depending on the
|
|
operating system, and uses a separate connection to the
|
|
server.
|
|
</para>
|
|
|
|
<para>
|
|
The optimal value for this option depends on the hardware
|
|
setup of the server, of the client, and of the network.
|
|
Factors include the number of CPU cores and the disk setup. A
|
|
good place to start is the number of CPU cores on the server,
|
|
but values larger than that can also lead to faster restore
|
|
times in many cases. Of course, values that are too high will
|
|
lead to decreased performance because of thrashing.
|
|
</para>
|
|
|
|
<para>
|
|
Only the custom and directory archive formats are supported
|
|
with this option.
|
|
The input must be a regular file or directory (not, for example, a
|
|
pipe or standard input). Also, multiple
|
|
jobs cannot be used together with the
|
|
option <option>--single-transaction</option>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-l</option></term>
|
|
<term><option>--list</option></term>
|
|
<listitem>
|
|
<para>
|
|
List the table of contents of the archive. The output of this operation
|
|
can be used as input to the <option>-L</option> option. Note that
|
|
if filtering switches such as <option>-n</option> or <option>-t</option> are
|
|
used with <option>-l</option>, they will restrict the items listed.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-L <replaceable class="parameter">list-file</replaceable></option></term>
|
|
<term><option>--use-list=<replaceable class="parameter">list-file</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Restore only those archive elements that are listed in <replaceable
|
|
class="parameter">list-file</replaceable>, and restore them in the
|
|
order they appear in the file. Note that
|
|
if filtering switches such as <option>-n</option> or <option>-t</option> are
|
|
used with <option>-L</option>, they will further restrict the items restored.
|
|
</para>
|
|
<para><replaceable class="parameter">list-file</replaceable> is normally created by
|
|
editing the output of a previous <option>-l</option> operation.
|
|
Lines can be moved or removed, and can also
|
|
be commented out by placing a semicolon (<literal>;</literal>) at the
|
|
start of the line. See below for examples.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-n <replaceable class="parameter">schema</replaceable></option></term>
|
|
<term><option>--schema=<replaceable class="parameter">schema</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Restore only objects that are in the named schema. Multiple schemas
|
|
may be specified with multiple <option>-n</option> switches. This can be
|
|
combined with the <option>-t</option> option to restore just a
|
|
specific table.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-N <replaceable class="parameter">schema</replaceable></option></term>
|
|
<term><option>--exclude-schema=<replaceable class="parameter">schema</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Do not restore objects that are in the named schema. Multiple schemas
|
|
to be excluded may be specified with multiple <option>-N</option> switches.
|
|
</para>
|
|
|
|
<para>
|
|
When both <option>-n</option> and <option>-N</option> are given for the same
|
|
schema name, the <option>-N</option> switch wins and the schema is excluded.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-O</option></term>
|
|
<term><option>--no-owner</option></term>
|
|
<listitem>
|
|
<para>
|
|
Do not output commands to set
|
|
ownership of objects to match the original database.
|
|
By default, <application>pg_restore</application> issues
|
|
<command>ALTER OWNER</command> or
|
|
<command>SET SESSION AUTHORIZATION</command>
|
|
statements to set ownership of created schema elements.
|
|
These statements will fail unless the initial connection to the
|
|
database is made by a superuser
|
|
(or the same user that owns all of the objects in the script).
|
|
With <option>-O</option>, any user name can be used for the
|
|
initial connection, and this user will own all the created objects.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-P <replaceable class="parameter">function-name(argtype [, ...])</replaceable></option></term>
|
|
<term><option>--function=<replaceable class="parameter">function-name(argtype [, ...])</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Restore the named function only. Be careful to spell the function
|
|
name and arguments exactly as they appear in the dump file's table
|
|
of contents. Multiple functions may be specified with multiple
|
|
<option>-P</option> switches.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-R</option></term>
|
|
<term><option>--no-reconnect</option></term>
|
|
<listitem>
|
|
<para>
|
|
This option is obsolete but still accepted for backwards
|
|
compatibility.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-s</option></term>
|
|
<term><option>--schema-only</option></term>
|
|
<listitem>
|
|
<para>
|
|
Restore only the schema (data definitions), not data,
|
|
to the extent that schema entries are present in the archive.
|
|
</para>
|
|
<para>
|
|
This option is the inverse of <option>--data-only</option>.
|
|
It is similar to, but for historical reasons not identical to,
|
|
specifying
|
|
<option>--section=pre-data --section=post-data</option>.
|
|
</para>
|
|
<para>
|
|
(Do not confuse this with the <option>--schema</option> option, which
|
|
uses the word <quote>schema</quote> in a different meaning.)
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-S <replaceable class="parameter">username</replaceable></option></term>
|
|
<term><option>--superuser=<replaceable class="parameter">username</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Specify the superuser user name to use when disabling triggers.
|
|
This is relevant only if <option>--disable-triggers</option> is used.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-t <replaceable class="parameter">table</replaceable></option></term>
|
|
<term><option>--table=<replaceable class="parameter">table</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Restore definition and/or data of only the named table.
|
|
For this purpose, <quote>table</quote> includes views, materialized views,
|
|
sequences, and foreign tables. Multiple tables
|
|
can be selected by writing multiple <option>-t</option> switches.
|
|
This option can be combined with the <option>-n</option> option to
|
|
specify table(s) in a particular schema.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
When <option>-t</option> is specified, <application>pg_restore</application>
|
|
makes no attempt to restore any other database objects that the
|
|
selected table(s) might depend upon. Therefore, there is no
|
|
guarantee that a specific-table restore into a clean database will
|
|
succeed.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<para>
|
|
This flag does not behave identically to the <option>-t</option>
|
|
flag of <application>pg_dump</application>. There is not currently
|
|
any provision for wild-card matching in <application>pg_restore</application>,
|
|
nor can you include a schema name within its <option>-t</option>.
|
|
And, while <application>pg_dump</application>'s <option>-t</option>
|
|
flag will also dump subsidiary objects (such as indexes) of the
|
|
selected table(s),
|
|
<application>pg_restore</application>'s <option>-t</option>
|
|
flag does not include such subsidiary objects.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<para>
|
|
In versions prior to <productname>PostgreSQL</productname> 9.6, this flag
|
|
matched only tables, not any other type of relation.
|
|
</para>
|
|
</note>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-T <replaceable class="parameter">trigger</replaceable></option></term>
|
|
<term><option>--trigger=<replaceable class="parameter">trigger</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Restore named trigger only. Multiple triggers may be specified with
|
|
multiple <option>-T</option> switches.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-v</option></term>
|
|
<term><option>--verbose</option></term>
|
|
<listitem>
|
|
<para>
|
|
Specifies verbose mode.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-V</option></term>
|
|
<term><option>--version</option></term>
|
|
<listitem>
|
|
<para>
|
|
Print the <application>pg_restore</application> version and exit.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-x</option></term>
|
|
<term><option>--no-privileges</option></term>
|
|
<term><option>--no-acl</option></term>
|
|
<listitem>
|
|
<para>
|
|
Prevent restoration of access privileges (grant/revoke commands).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-1</option></term>
|
|
<term><option>--single-transaction</option></term>
|
|
<listitem>
|
|
<para>
|
|
Execute the restore as a single transaction (that is, wrap the
|
|
emitted commands in <command>BEGIN</command>/<command>COMMIT</command>). This
|
|
ensures that either all the commands complete successfully, or no
|
|
changes are applied. This option implies
|
|
<option>--exit-on-error</option>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--disable-triggers</option></term>
|
|
<listitem>
|
|
<para>
|
|
This option is relevant only when performing a data-only restore.
|
|
It instructs <application>pg_restore</application> to execute commands
|
|
to temporarily disable triggers on the target tables while
|
|
the data is reloaded. Use this if you have referential
|
|
integrity checks or other triggers on the tables that you
|
|
do not want to invoke during data reload.
|
|
</para>
|
|
|
|
<para>
|
|
Presently, the commands emitted for
|
|
<option>--disable-triggers</option> must be done as superuser. So you
|
|
should also specify a superuser name with <option>-S</option> or,
|
|
preferably, run <application>pg_restore</application> as a
|
|
<productname>PostgreSQL</productname> superuser.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--enable-row-security</option></term>
|
|
<listitem>
|
|
<para>
|
|
This option is relevant only when restoring the contents of a table
|
|
which has row security. By default, <application>pg_restore</application> will set
|
|
<xref linkend="guc-row-security"/> to off, to ensure
|
|
that all data is restored in to the table. If the user does not have
|
|
sufficient privileges to bypass row security, then an error is thrown.
|
|
This parameter instructs <application>pg_restore</application> to set
|
|
<xref linkend="guc-row-security"/> to on instead, allowing the user to attempt to restore
|
|
the contents of the table with row security enabled. This might still
|
|
fail if the user does not have the right to insert the rows from the
|
|
dump into the table.
|
|
</para>
|
|
|
|
<para>
|
|
Note that this option currently also requires the dump be in <command>INSERT</command>
|
|
format, as <command>COPY FROM</command> does not support row security.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--if-exists</option></term>
|
|
<listitem>
|
|
<para>
|
|
Use conditional commands (i.e., add an <literal>IF EXISTS</literal>
|
|
clause) to drop database objects. This option is not valid
|
|
unless <option>--clean</option> is also specified.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--no-comments</option></term>
|
|
<listitem>
|
|
<para>
|
|
Do not output commands to restore comments, even if the archive
|
|
contains them.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--no-data-for-failed-tables</option></term>
|
|
<listitem>
|
|
<para>
|
|
By default, table data is restored even if the creation command
|
|
for the table failed (e.g., because it already exists).
|
|
With this option, data for such a table is skipped.
|
|
This behavior is useful if the target database already
|
|
contains the desired table contents. For example,
|
|
auxiliary tables for <productname>PostgreSQL</productname> extensions
|
|
such as <productname>PostGIS</productname> might already be loaded in
|
|
the target database; specifying this option prevents duplicate
|
|
or obsolete data from being loaded into them.
|
|
</para>
|
|
|
|
<para>
|
|
This option is effective only when restoring directly into a
|
|
database, not when producing SQL script output.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--no-publications</option></term>
|
|
<listitem>
|
|
<para>
|
|
Do not output commands to restore publications, even if the archive
|
|
contains them.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--no-security-labels</option></term>
|
|
<listitem>
|
|
<para>
|
|
Do not output commands to restore security labels,
|
|
even if the archive contains them.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--no-subscriptions</option></term>
|
|
<listitem>
|
|
<para>
|
|
Do not output commands to restore subscriptions, even if the archive
|
|
contains them.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--no-tablespaces</option></term>
|
|
<listitem>
|
|
<para>
|
|
Do not output commands to select tablespaces.
|
|
With this option, all objects will be created in whichever
|
|
tablespace is the default during restore.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--section=<replaceable class="parameter">sectionname</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Only restore the named section. The section name can be
|
|
<option>pre-data</option>, <option>data</option>, or <option>post-data</option>.
|
|
This option can be specified more than once to select multiple
|
|
sections. The default is to restore all sections.
|
|
</para>
|
|
<para>
|
|
The data section contains actual table data as well as large-object
|
|
definitions.
|
|
Post-data items consist of definitions of indexes, triggers, rules
|
|
and constraints other than validated check constraints.
|
|
Pre-data items consist of all other data definition items.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--strict-names</option></term>
|
|
<listitem>
|
|
<para>
|
|
Require that each schema
|
|
(<option>-n</option>/<option>--schema</option>) and table
|
|
(<option>-t</option>/<option>--table</option>) qualifier match at
|
|
least one schema/table in the backup file.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--use-set-session-authorization</option></term>
|
|
<listitem>
|
|
<para>
|
|
Output SQL-standard <command>SET SESSION AUTHORIZATION</command> commands
|
|
instead of <command>ALTER OWNER</command> commands to determine object
|
|
ownership. This makes the dump more standards-compatible, but
|
|
depending on the history of the objects in the dump, might not restore
|
|
properly.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-?</option></term>
|
|
<term><option>--help</option></term>
|
|
<listitem>
|
|
<para>
|
|
Show help about <application>pg_restore</application> command line
|
|
arguments, and exit.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>
|
|
<application>pg_restore</application> also accepts
|
|
the following command line arguments for connection parameters:
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><option>-h <replaceable class="parameter">host</replaceable></option></term>
|
|
<term><option>--host=<replaceable class="parameter">host</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Specifies the host name of the machine on which the server is
|
|
running. If the value begins with a slash, it is used as the
|
|
directory for the Unix domain socket. The default is taken
|
|
from the <envar>PGHOST</envar> environment variable, if set,
|
|
else a Unix domain socket connection is attempted.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-p <replaceable class="parameter">port</replaceable></option></term>
|
|
<term><option>--port=<replaceable class="parameter">port</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Specifies the TCP port or local Unix domain socket file
|
|
extension on which the server is listening for connections.
|
|
Defaults to the <envar>PGPORT</envar> environment variable, if
|
|
set, or a compiled-in default.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-U <replaceable>username</replaceable></option></term>
|
|
<term><option>--username=<replaceable class="parameter">username</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
User name to connect as.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-w</option></term>
|
|
<term><option>--no-password</option></term>
|
|
<listitem>
|
|
<para>
|
|
Never issue a password prompt. If the server requires
|
|
password authentication and a password is not available by
|
|
other means such as a <filename>.pgpass</filename> file, the
|
|
connection attempt will fail. This option can be useful in
|
|
batch jobs and scripts where no user is present to enter a
|
|
password.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-W</option></term>
|
|
<term><option>--password</option></term>
|
|
<listitem>
|
|
<para>
|
|
Force <application>pg_restore</application> to prompt for a
|
|
password before connecting to a database.
|
|
</para>
|
|
|
|
<para>
|
|
This option is never essential, since
|
|
<application>pg_restore</application> will automatically prompt
|
|
for a password if the server demands password authentication.
|
|
However, <application>pg_restore</application> will waste a
|
|
connection attempt finding out that the server wants a password.
|
|
In some cases it is worth typing <option>-W</option> to avoid the extra
|
|
connection attempt.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>--role=<replaceable class="parameter">rolename</replaceable></option></term>
|
|
<listitem>
|
|
<para>
|
|
Specifies a role name to be used to perform the restore.
|
|
This option causes <application>pg_restore</application> to issue a
|
|
<command>SET ROLE</command> <replaceable class="parameter">rolename</replaceable>
|
|
command after connecting to the database. It is useful when the
|
|
authenticated user (specified by <option>-U</option>) lacks privileges
|
|
needed by <application>pg_restore</application>, but can switch to a role with
|
|
the required rights. Some installations have a policy against
|
|
logging in directly as a superuser, and use of this option allows
|
|
restores to be performed without violating the policy.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
|
|
<refsect1>
|
|
<title>Environment</title>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><envar>PGHOST</envar></term>
|
|
<term><envar>PGOPTIONS</envar></term>
|
|
<term><envar>PGPORT</envar></term>
|
|
<term><envar>PGUSER</envar></term>
|
|
|
|
<listitem>
|
|
<para>
|
|
Default connection parameters
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><envar>PG_COLOR</envar></term>
|
|
<listitem>
|
|
<para>
|
|
Specifies whether to use color in diagnostic messages. Possible values
|
|
are <literal>always</literal>, <literal>auto</literal> and
|
|
<literal>never</literal>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>
|
|
This utility, like most other <productname>PostgreSQL</productname> utilities,
|
|
also uses the environment variables supported by <application>libpq</application>
|
|
(see <xref linkend="libpq-envars"/>). However, it does not read
|
|
<envar>PGDATABASE</envar> when a database name is not supplied.
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
|
|
<refsect1 id="app-pgrestore-diagnostics">
|
|
<title>Diagnostics</title>
|
|
|
|
<para>
|
|
When a direct database connection is specified using the
|
|
<option>-d</option> option, <application>pg_restore</application>
|
|
internally executes <acronym>SQL</acronym> statements. If you have
|
|
problems running <application>pg_restore</application>, make sure
|
|
you are able to select information from the database using, for
|
|
example, <xref linkend="app-psql"/>. Also, any default connection
|
|
settings and environment variables used by the
|
|
<application>libpq</application> front-end library will apply.
|
|
</para>
|
|
</refsect1>
|
|
|
|
|
|
<refsect1 id="app-pgrestore-notes">
|
|
<title>Notes</title>
|
|
|
|
<para>
|
|
If your installation has any local additions to the
|
|
<literal>template1</literal> database, be careful to load the output of
|
|
<application>pg_restore</application> into a truly empty database;
|
|
otherwise you are likely to get errors due to duplicate definitions
|
|
of the added objects. To make an empty database without any local
|
|
additions, copy from <literal>template0</literal> not <literal>template1</literal>, for example:
|
|
<programlisting>
|
|
CREATE DATABASE foo WITH TEMPLATE template0;
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
The limitations of <application>pg_restore</application> are detailed below.
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
When restoring data to a pre-existing table and the option
|
|
<option>--disable-triggers</option> is used,
|
|
<application>pg_restore</application> emits commands
|
|
to disable triggers on user tables before inserting the data, then emits commands to
|
|
re-enable them after the data has been inserted. If the restore is stopped in the
|
|
middle, the system catalogs might be left in the wrong state.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><application>pg_restore</application> cannot restore large objects
|
|
selectively; for instance, only those for a specific table. If
|
|
an archive contains large objects, then all large objects will be
|
|
restored, or none of them if they are excluded via <option>-L</option>,
|
|
<option>-t</option>, or other options.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
See also the <xref linkend="app-pgdump"/> documentation for details on
|
|
limitations of <application>pg_dump</application>.
|
|
</para>
|
|
|
|
<para>
|
|
Once restored, it is wise to run <command>ANALYZE</command> on each
|
|
restored table so the optimizer has useful statistics; see
|
|
<xref linkend="vacuum-for-statistics"/> and
|
|
<xref linkend="autovacuum"/> for more information.
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
|
|
<refsect1 id="app-pgrestore-examples">
|
|
<title>Examples</title>
|
|
|
|
<para>
|
|
Assume we have dumped a database called <literal>mydb</literal> into a
|
|
custom-format dump file:
|
|
|
|
<screen>
|
|
<prompt>$</prompt> <userinput>pg_dump -Fc mydb > db.dump</userinput>
|
|
</screen>
|
|
</para>
|
|
|
|
<para>
|
|
To drop the database and recreate it from the dump:
|
|
|
|
<screen>
|
|
<prompt>$</prompt> <userinput>dropdb mydb</userinput>
|
|
<prompt>$</prompt> <userinput>pg_restore -C -d postgres db.dump</userinput>
|
|
</screen>
|
|
|
|
The database named in the <option>-d</option> switch can be any database existing
|
|
in the cluster; <application>pg_restore</application> only uses it to issue the
|
|
<command>CREATE DATABASE</command> command for <literal>mydb</literal>. With
|
|
<option>-C</option>, data is always restored into the database name that appears
|
|
in the dump file.
|
|
</para>
|
|
|
|
<para>
|
|
To reload the dump into a new database called <literal>newdb</literal>:
|
|
|
|
<screen>
|
|
<prompt>$</prompt> <userinput>createdb -T template0 newdb</userinput>
|
|
<prompt>$</prompt> <userinput>pg_restore -d newdb db.dump</userinput>
|
|
</screen>
|
|
|
|
Notice we don't use <option>-C</option>, and instead connect directly to the
|
|
database to be restored into. Also note that we clone the new database
|
|
from <literal>template0</literal> not <literal>template1</literal>, to ensure it is
|
|
initially empty.
|
|
</para>
|
|
|
|
<para>
|
|
To reorder database items, it is first necessary to dump the table of
|
|
contents of the archive:
|
|
<screen>
|
|
<prompt>$</prompt> <userinput>pg_restore -l db.dump > db.list</userinput>
|
|
</screen>
|
|
The listing file consists of a header and one line for each item, e.g.:
|
|
<programlisting>
|
|
;
|
|
; Archive created at Mon Sep 14 13:55:39 2009
|
|
; dbname: DBDEMOS
|
|
; TOC Entries: 81
|
|
; Compression: 9
|
|
; Dump Version: 1.10-0
|
|
; Format: CUSTOM
|
|
; Integer: 4 bytes
|
|
; Offset: 8 bytes
|
|
; Dumped from database version: 8.3.5
|
|
; Dumped by pg_dump version: 8.3.8
|
|
;
|
|
;
|
|
; Selected TOC Entries:
|
|
;
|
|
3; 2615 2200 SCHEMA - public pasha
|
|
1861; 0 0 COMMENT - SCHEMA public pasha
|
|
1862; 0 0 ACL - public pasha
|
|
317; 1247 17715 TYPE public composite pasha
|
|
319; 1247 25899 DOMAIN public domain0 pasha
|
|
</programlisting>
|
|
Semicolons start a comment, and the numbers at the start of lines refer to the
|
|
internal archive ID assigned to each item.
|
|
</para>
|
|
|
|
<para>
|
|
Lines in the file can be commented out, deleted, and reordered. For example:
|
|
<programlisting>
|
|
10; 145433 TABLE map_resolutions postgres
|
|
;2; 145344 TABLE species postgres
|
|
;4; 145359 TABLE nt_header postgres
|
|
6; 145402 TABLE species_records postgres
|
|
;8; 145416 TABLE ss_old postgres
|
|
</programlisting>
|
|
could be used as input to <application>pg_restore</application> and would only restore
|
|
items 10 and 6, in that order:
|
|
<screen>
|
|
<prompt>$</prompt> <userinput>pg_restore -L db.list db.dump</userinput>
|
|
</screen></para>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>See Also</title>
|
|
|
|
<simplelist type="inline">
|
|
<member><xref linkend="app-pgdump"/></member>
|
|
<member><xref linkend="app-pg-dumpall"/></member>
|
|
<member><xref linkend="app-psql"/></member>
|
|
</simplelist>
|
|
</refsect1>
|
|
</refentry>
|