'\" t
.\"     Title: pg_dump
.\"    Author: The PostgreSQL Global Development Group
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
.\"      Date: 2017-11-06
.\"    Manual: PostgreSQL 9.2.24 Documentation
.\"    Source: PostgreSQL 9.2.24
.\"  Language: English
.\"
.TH "PG_DUMP" "1" "2017-11-06" "PostgreSQL 9.2.24" "PostgreSQL 9.2.24 Documentation"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
pg_dump \- extract a PostgreSQL database into a script file or other archive file
.\" pg_dump
.SH "SYNOPSIS"
.HP \w'\fBpg_dump\fR\ 'u
\fBpg_dump\fR [\fIconnection\-option\fR...] [\fIoption\fR...] [\fIdbname\fR]
.SH "DESCRIPTION"
.PP
pg_dump
is a utility for backing up a
PostgreSQL
database\&. It makes consistent backups even if the database is being used concurrently\&.
pg_dump
does not block other users accessing the database (readers or writers)\&.
.PP
Dumps can be output in script or archive file formats\&. Script dumps are plain\-text files containing the SQL commands required to reconstruct the database to the state it was in at the time it was saved\&. To restore from such a script, feed it to
\fBpsql\fR(1)\&. Script files can be used to reconstruct the database even on other machines and other architectures; with some modifications, even on other SQL database products\&.
.PP
The alternative archive file formats must be used with
\fBpg_restore\fR(1)
to rebuild the database\&. They allow
pg_restore
to be selective about what is restored, or even to reorder the items prior to being restored\&. The archive file formats are designed to be portable across architectures\&.
.PP
When used with one of the archive file formats and combined with
pg_restore,
pg_dump
provides a flexible archival and transfer mechanism\&.
pg_dump
can be used to backup an entire database, then
pg_restore
can be used to examine the archive and/or select which parts of the database are to be restored\&. The most flexible output file format is the
\(lqcustom\(rq
format (\fB\-Fc\fR)\&. It allows for selection and reordering of all archived items, and is compressed by default\&.
.PP
While running
pg_dump, one should examine the output for any warnings (printed on standard error), especially in light of the limitations listed below\&.
.SH "OPTIONS"
.PP
The following command\-line options control the content and format of the output\&.
.PP
\fIdbname\fR
.RS 4
Specifies the name of the database to be dumped\&. If this is not specified, the environment variable
\fBPGDATABASE\fR
is used\&. If that is not set, the user name specified for the connection is used\&.
.RE
.PP
\fB\-a\fR, \fB\-\-data\-only\fR
.RS 4
Dump only the data, not the schema (data definitions)\&. Table data, large objects, and sequence values are dumped\&.
.sp
This option is similar to, but for historical reasons not identical to, specifying
\fB\-\-section=data\fR\&.
.RE
.PP
\fB\-b\fR, \fB\-\-blobs\fR
.RS 4
Include large objects in the dump\&. This is the default behavior except when
\fB\-\-schema\fR,
\fB\-\-table\fR, or
\fB\-\-schema\-only\fR
is specified\&. The
\fB\-b\fR
switch is therefore only useful to add large objects to dumps where a specific schema or table has been requested\&. Note that blobs are considered data and therefore will be included when \-\-data\-only is used, but not when \-\-schema\-only is\&.
.RE
.PP
\fB\-c\fR, \fB\-\-clean\fR
.RS 4
Output commands to clean (drop) database objects prior to outputting the commands for creating them\&. (Restore might generate some harmless error messages, if any objects were not present in the destination database\&.)
.sp
This option is only meaningful for the plain\-text format\&. For the archive formats, you can specify the option when you call
\fBpg_restore\fR\&.
.RE
.PP
\fB\-C\fR, \fB\-\-create\fR
.RS 4
Begin the output with a command to create the database itself and reconnect to the created database\&. (With a script of this form, it doesn\*(Aqt matter which database in the destination installation you connect to before running the script\&.) If
\fB\-\-clean\fR
is also specified, the script drops and recreates the target database before reconnecting to it\&.
.sp
This option is only meaningful for the plain\-text format\&. For the archive formats, you can specify the option when you call
\fBpg_restore\fR\&.
.RE
.PP
\fB\-E \fR\fB\fIencoding\fR\fR, \fB\-\-encoding=\fR\fB\fIencoding\fR\fR
.RS 4
Create the dump in the specified character set encoding\&. By default, the dump is created in the database encoding\&. (Another way to get the same result is to set the
\fBPGCLIENTENCODING\fR
environment variable to the desired dump encoding\&.)
.RE
.PP
\fB\-f \fR\fB\fIfile\fR\fR, \fB\-\-file=\fR\fB\fIfile\fR\fR
.RS 4
Send output to the specified file\&. This parameter can be omitted for file based output formats, in which case the standard output is used\&. It must be given for the directory output format however, where it specifies the target directory instead of a file\&. In this case the directory is created by
\fBpg_dump\fR
and must not exist before\&.
.RE
.PP
\fB\-F \fR\fB\fIformat\fR\fR, \fB\-\-format=\fR\fB\fIformat\fR\fR
.RS 4
Selects the format of the output\&.
\fIformat\fR
can be one of the following:
.PP
p, plain
.RS 4
Output a plain\-text
SQL
script file (the default)\&.
.RE
.PP
c, custom
.RS 4
Output a custom\-format archive suitable for input into
pg_restore\&. Together with the directory output format, this is the most flexible output format in that it allows manual selection and reordering of archived items during restore\&. This format is also compressed by default\&.
.RE
.PP
d, directory
.RS 4
Output a directory\-format archive suitable for input into
pg_restore\&. This will create a directory with one file for each table and blob being dumped, plus a so\-called Table of Contents file describing the dumped objects in a machine\-readable format that
pg_restore
can read\&. A directory format archive can be manipulated with standard Unix tools; for example, files in an uncompressed archive can be compressed with the
gzip
tool\&. This format is compressed by default\&.
.RE
.PP
t, tar
.RS 4
Output a
\fBtar\fR\-format archive suitable for input into
pg_restore\&. The tar format is compatible with the directory format: extracting a tar\-format archive produces a valid directory\-format archive\&. However, the tar format does not support compression\&. Also, when using tar format the relative order of table data items cannot be changed during restore\&.
.RE
.RE
.PP
\fB\-i\fR, \fB\-\-ignore\-version\fR
.RS 4
A deprecated option that is now ignored\&.
.RE
.PP
\fB\-n \fR\fB\fIschema\fR\fR, \fB\-\-schema=\fR\fB\fIschema\fR\fR
.RS 4
Dump only schemas matching
\fIschema\fR; this selects both the schema itself, and all its contained objects\&. When this option is not specified, all non\-system schemas in the target database will be dumped\&. Multiple schemas can be selected by writing multiple
\fB\-n\fR
switches\&. Also, the
\fIschema\fR
parameter is interpreted as a pattern according to the same rules used by
psql\*(Aqs
\ed
commands (see
Patterns), so multiple schemas can also be selected by writing wildcard characters in the pattern\&. When using wildcards, be careful to quote the pattern if needed to prevent the shell from expanding the wildcards; see
EXAMPLES\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
When
\fB\-n\fR
is specified,
pg_dump
makes no attempt to dump any other database objects that the selected schema(s) might depend upon\&. Therefore, there is no guarantee that the results of a specific\-schema dump can be successfully restored by themselves into a clean database\&.
.sp .5v
.RE
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
Non\-schema objects such as blobs are not dumped when
\fB\-n\fR
is specified\&. You can add blobs back to the dump with the
\fB\-\-blobs\fR
switch\&.
.sp .5v
.RE
.RE
.PP
\fB\-N \fR\fB\fIschema\fR\fR, \fB\-\-exclude\-schema=\fR\fB\fIschema\fR\fR
.RS 4
Do not dump any schemas matching the
\fIschema\fR
pattern\&. The pattern is interpreted according to the same rules as for
\fB\-n\fR\&.
\fB\-N\fR
can be given more than once to exclude schemas matching any of several patterns\&.
.sp
When both
\fB\-n\fR
and
\fB\-N\fR
are given, the behavior is to dump just the schemas that match at least one
\fB\-n\fR
switch but no
\fB\-N\fR
switches\&. If
\fB\-N\fR
appears without
\fB\-n\fR, then schemas matching
\fB\-N\fR
are excluded from what is otherwise a normal dump\&.
.RE
.PP
\fB\-o\fR, \fB\-\-oids\fR
.RS 4
Dump object identifiers (OIDs) as part of the data for every table\&. Use this option if your application references the
OID
columns in some way (e\&.g\&., in a foreign key constraint)\&. Otherwise, this option should not be used\&.
.RE
.PP
\fB\-O\fR, \fB\-\-no\-owner\fR
.RS 4
Do not output commands to set ownership of objects to match the original database\&. By default,
pg_dump
issues
\fBALTER OWNER\fR
or
\fBSET SESSION AUTHORIZATION\fR
statements to set ownership of created database objects\&. These statements will fail when the script is run unless it is started by a superuser (or the same user that owns all of the objects in the script)\&. To make a script that can be restored by any user, but will give that user ownership of all the objects, specify
\fB\-O\fR\&.
.sp
This option is only meaningful for the plain\-text format\&. For the archive formats, you can specify the option when you call
\fBpg_restore\fR\&.
.RE
.PP
\fB\-R\fR, \fB\-\-no\-reconnect\fR
.RS 4
This option is obsolete but still accepted for backwards compatibility\&.
.RE
.PP
\fB\-s\fR, \fB\-\-schema\-only\fR
.RS 4
Dump only the object definitions (schema), not data\&.
.sp
This option is the inverse of
\fB\-\-data\-only\fR\&. It is similar to, but for historical reasons not identical to, specifying
\fB\-\-section=pre\-data \-\-section=post\-data\fR\&.
.sp
(Do not confuse this with the
\fB\-\-schema\fR
option, which uses the word
\(lqschema\(rq
in a different meaning\&.)
.sp
To exclude table data for only a subset of tables in the database, see
\fB\-\-exclude\-table\-data\fR\&.
.RE
.PP
\fB\-S \fR\fB\fIusername\fR\fR, \fB\-\-superuser=\fR\fB\fIusername\fR\fR
.RS 4
Specify the superuser user name to use when disabling triggers\&. This is only relevant if
\fB\-\-disable\-triggers\fR
is used\&. (Usually, it\*(Aqs better to leave this out, and instead start the resulting script as superuser\&.)
.RE
.PP
\fB\-t \fR\fB\fItable\fR\fR, \fB\-\-table=\fR\fB\fItable\fR\fR
.RS 4
Dump only tables (or views or sequences or foreign tables) matching
\fItable\fR\&. Multiple tables can be selected by writing multiple
\fB\-t\fR
switches\&. Also, the
\fItable\fR
parameter is interpreted as a pattern according to the same rules used by
psql\*(Aqs
\ed
commands (see
Patterns), so multiple tables can also be selected by writing wildcard characters in the pattern\&. When using wildcards, be careful to quote the pattern if needed to prevent the shell from expanding the wildcards; see
EXAMPLES\&.
.sp
The
\fB\-n\fR
and
\fB\-N\fR
switches have no effect when
\fB\-t\fR
is used, because tables selected by
\fB\-t\fR
will be dumped regardless of those switches, and non\-table objects will not be dumped\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
When
\fB\-t\fR
is specified,
pg_dump
makes no attempt to dump any other database objects that the selected table(s) might depend upon\&. Therefore, there is no guarantee that the results of a specific\-table dump can be successfully restored by themselves into a clean database\&.
.sp .5v
.RE
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
The behavior of the
\fB\-t\fR
switch is not entirely upward compatible with pre\-8\&.2
PostgreSQL
versions\&. Formerly, writing
\-t tab
would dump all tables named
tab, but now it just dumps whichever one is visible in your default search path\&. To get the old behavior you can write
\-t \*(Aq*\&.tab\*(Aq\&. Also, you must write something like
\-t sch\&.tab
to select a table in a particular schema, rather than the old locution of
\-n sch \-t tab\&.
.sp .5v
.RE
.RE
.PP
\fB\-T \fR\fB\fItable\fR\fR, \fB\-\-exclude\-table=\fR\fB\fItable\fR\fR
.RS 4
Do not dump any tables matching the
\fItable\fR
pattern\&. The pattern is interpreted according to the same rules as for
\fB\-t\fR\&.
\fB\-T\fR
can be given more than once to exclude tables matching any of several patterns\&.
.sp
When both
\fB\-t\fR
and
\fB\-T\fR
are given, the behavior is to dump just the tables that match at least one
\fB\-t\fR
switch but no
\fB\-T\fR
switches\&. If
\fB\-T\fR
appears without
\fB\-t\fR, then tables matching
\fB\-T\fR
are excluded from what is otherwise a normal dump\&.
.RE
.PP
\fB\-v\fR, \fB\-\-verbose\fR
.RS 4
Specifies verbose mode\&. This will cause
pg_dump
to output detailed object comments and start/stop times to the dump file, and progress messages to standard error\&.
.RE
.PP
\fB\-V\fR, \fB\-\-version\fR
.RS 4
Print the
pg_dump
version and exit\&.
.RE
.PP
\fB\-x\fR, \fB\-\-no\-privileges\fR, \fB\-\-no\-acl\fR
.RS 4
Prevent dumping of access privileges (grant/revoke commands)\&.
.RE
.PP
\fB\-Z \fR\fB\fI0\&.\&.9\fR\fR, \fB\-\-compress=\fR\fB\fI0\&.\&.9\fR\fR
.RS 4
Specify the compression level to use\&. Zero means no compression\&. For the custom archive format, this specifies compression of individual table\-data segments, and the default is to compress at a moderate level\&. For plain text output, setting a nonzero compression level causes the entire output file to be compressed, as though it had been fed through
gzip; but the default is not to compress\&. The tar archive format currently does not support compression at all\&.
.RE
.PP
\fB\-\-binary\-upgrade\fR
.RS 4
This option is for use by in\-place upgrade utilities\&. Its use for other purposes is not recommended or supported\&. The behavior of the option may change in future releases without notice\&.
.RE
.PP
\fB\-\-column\-inserts\fR, \fB\-\-attribute\-inserts\fR
.RS 4
Dump data as
\fBINSERT\fR
commands with explicit column names (INSERT INTO \fItable\fR (\fIcolumn\fR, \&.\&.\&.) VALUES \&.\&.\&.)\&. This will make restoration very slow; it is mainly useful for making dumps that can be loaded into non\-PostgreSQL
databases\&. However, since this option generates a separate command for each row, an error in reloading a row causes only that row to be lost rather than the entire table contents\&.
.RE
.PP
\fB\-\-disable\-dollar\-quoting\fR
.RS 4
This option disables the use of dollar quoting for function bodies, and forces them to be quoted using SQL standard string syntax\&.
.RE
.PP
\fB\-\-disable\-triggers\fR
.RS 4
This option is only relevant when creating a data\-only dump\&. It instructs
pg_dump
to include 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\&.
.sp
Presently, the commands emitted for
\fB\-\-disable\-triggers\fR
must be done as superuser\&. So, you should also specify a superuser name with
\fB\-S\fR, or preferably be careful to start the resulting script as a superuser\&.
.sp
This option is only meaningful for the plain\-text format\&. For the archive formats, you can specify the option when you call
\fBpg_restore\fR\&.
.RE
.PP
\fB\-\-exclude\-table\-data=\fR\fB\fItable\fR\fR
.RS 4
Do not dump data for any tables matching the
\fItable\fR
pattern\&. The pattern is interpreted according to the same rules as for
\fB\-t\fR\&.
\fB\-\-exclude\-table\-data\fR
can be given more than once to exclude tables matching any of several patterns\&. This option is useful when you need the definition of a particular table even though you do not need the data in it\&.
.sp
To exclude data for all tables in the database, see
\fB\-\-schema\-only\fR\&.
.RE
.PP
\fB\-\-inserts\fR
.RS 4
Dump data as
\fBINSERT\fR
commands (rather than
\fBCOPY\fR)\&. This will make restoration very slow; it is mainly useful for making dumps that can be loaded into non\-PostgreSQL
databases\&. However, since this option generates a separate command for each row, an error in reloading a row causes only that row to be lost rather than the entire table contents\&. Note that the restore might fail altogether if you have rearranged column order\&. The
\fB\-\-column\-inserts\fR
option is safe against column order changes, though even slower\&.
.RE
.PP
\fB\-\-lock\-wait\-timeout=\fR\fB\fItimeout\fR\fR
.RS 4
Do not wait forever to acquire shared table locks at the beginning of the dump\&. Instead fail if unable to lock a table within the specified
\fItimeout\fR\&. The timeout may be specified in any of the formats accepted by
\fBSET statement_timeout\fR\&. (Allowed values vary depending on the server version you are dumping from, but an integer number of milliseconds is accepted by all versions since 7\&.3\&. This option is ignored when dumping from a pre\-7\&.3 server\&.)
.RE
.PP
\fB\-\-no\-security\-labels\fR
.RS 4
Do not dump security labels\&.
.RE
.PP
\fB\-\-no\-tablespaces\fR
.RS 4
Do not output commands to select tablespaces\&. With this option, all objects will be created in whichever tablespace is the default during restore\&.
.sp
This option is only meaningful for the plain\-text format\&. For the archive formats, you can specify the option when you call
\fBpg_restore\fR\&.
.RE
.PP
\fB\-\-no\-unlogged\-table\-data\fR
.RS 4
Do not dump the contents of unlogged tables\&. This option has no effect on whether or not the table definitions (schema) are dumped; it only suppresses dumping the table data\&. Data in unlogged tables is always excluded when dumping from a standby server\&.
.RE
.PP
\fB\-\-quote\-all\-identifiers\fR
.RS 4
Force quoting of all identifiers\&. This option is recommended when dumping a database from a server whose
PostgreSQL
major version is different from
pg_dump\*(Aqs, or when the output is intended to be loaded into a server of a different major version\&. By default,
pg_dump
quotes only identifiers that are reserved words in its own major version\&. This sometimes results in compatibility issues when dealing with servers of other versions that may have slightly different sets of reserved words\&. Using
\fB\-\-quote\-all\-identifiers\fR
prevents such issues, at the price of a harder\-to\-read dump script\&.
.RE
.PP
\fB\-\-section=\fR\fB\fIsectionname\fR\fR
.RS 4
Only dump the named section\&. The section name can be
\fBpre\-data\fR,
\fBdata\fR, or
\fBpost\-data\fR\&. This option can be specified more than once to select multiple sections\&. The default is to dump all sections\&.
.sp
The data section contains actual table data, large\-object contents, and sequence values\&. Post\-data items include definitions of indexes, triggers, rules, and constraints other than validated check constraints\&. Pre\-data items include all other data definition items\&.
.RE
.PP
\fB\-\-serializable\-deferrable\fR
.RS 4
Use a
serializable
transaction for the dump, to ensure that the snapshot used is consistent with later database states; but do this by waiting for a point in the transaction stream at which no anomalies can be present, so that there isn\*(Aqt a risk of the dump failing or causing other transactions to roll back with a
serialization_failure\&. See
Chapter 13, Concurrency Control, in the documentation
for more information about transaction isolation and concurrency control\&.
.sp
This option is not beneficial for a dump which is intended only for disaster recovery\&. It could be useful for a dump used to load a copy of the database for reporting or other read\-only load sharing while the original database continues to be updated\&. Without it the dump may reflect a state which is not consistent with any serial execution of the transactions eventually committed\&. For example, if batch processing techniques are used, a batch may show as closed in the dump without all of the items which are in the batch appearing\&.
.sp
This option will make no difference if there are no read\-write transactions active when pg_dump is started\&. If read\-write transactions are active, the start of the dump may be delayed for an indeterminate length of time\&. Once running, performance with or without the switch is the same\&.
.RE
.PP
\fB\-\-use\-set\-session\-authorization\fR
.RS 4
Output SQL\-standard
\fBSET SESSION AUTHORIZATION\fR
commands instead of
\fBALTER OWNER\fR
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\&. Also, a dump using
\fBSET SESSION AUTHORIZATION\fR
will certainly require superuser privileges to restore correctly, whereas
\fBALTER OWNER\fR
requires lesser privileges\&.
.RE
.PP
\fB\-?\fR, \fB\-\-help\fR
.RS 4
Show help about
pg_dump
command line arguments, and exit\&.
.RE
.PP
The following command\-line options control the database connection parameters\&.
.PP
\fB\-h \fR\fB\fIhost\fR\fR, \fB\-\-host=\fR\fB\fIhost\fR\fR
.RS 4
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
\fBPGHOST\fR
environment variable, if set, else a Unix domain socket connection is attempted\&.
.RE
.PP
\fB\-p \fR\fB\fIport\fR\fR, \fB\-\-port=\fR\fB\fIport\fR\fR
.RS 4
Specifies the TCP port or local Unix domain socket file extension on which the server is listening for connections\&. Defaults to the
\fBPGPORT\fR
environment variable, if set, or a compiled\-in default\&.
.RE
.PP
\fB\-U \fR\fB\fIusername\fR\fR, \fB\-\-username=\fR\fB\fIusername\fR\fR
.RS 4
User name to connect as\&.
.RE
.PP
\fB\-w\fR, \fB\-\-no\-password\fR
.RS 4
Never issue a password prompt\&. If the server requires password authentication and a password is not available by other means such as a
\&.pgpass
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\&.
.RE
.PP
\fB\-W\fR, \fB\-\-password\fR
.RS 4
Force
pg_dump
to prompt for a password before connecting to a database\&.
.sp
This option is never essential, since
pg_dump
will automatically prompt for a password if the server demands password authentication\&. However,
pg_dump
will waste a connection attempt finding out that the server wants a password\&. In some cases it is worth typing
\fB\-W\fR
to avoid the extra connection attempt\&.
.RE
.PP
\fB\-\-role=\fR\fB\fIrolename\fR\fR
.RS 4
Specifies a role name to be used to create the dump\&. This option causes
pg_dump
to issue a
\fBSET ROLE\fR\fIrolename\fR
command after connecting to the database\&. It is useful when the authenticated user (specified by
\fB\-U\fR) lacks privileges needed by
pg_dump, 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 dumps to be made without violating the policy\&.
.RE
.SH "ENVIRONMENT"
.PP
\fBPGDATABASE\fR, \fBPGHOST\fR, \fBPGOPTIONS\fR, \fBPGPORT\fR, \fBPGUSER\fR
.RS 4
Default connection parameters\&.
.RE
.PP
This utility, like most other
PostgreSQL
utilities, also uses the environment variables supported by
libpq
(see
Section 31.14, \(lqEnvironment Variables\(rq, in the documentation)\&.
.SH "DIAGNOSTICS"
.PP
pg_dump
internally executes
\fBSELECT\fR
statements\&. If you have problems running
pg_dump, make sure you are able to select information from the database using, for example,
\fBpsql\fR(1)\&. Also, any default connection settings and environment variables used by the
libpq
front\-end library will apply\&.
.PP
The database activity of
pg_dump
is normally collected by the statistics collector\&. If this is undesirable, you can set parameter
\fItrack_counts\fR
to false via
\fBPGOPTIONS\fR
or the
ALTER USER
command\&.
.SH "NOTES"
.PP
If your database cluster has any local additions to the
template1
database, be careful to restore the output of
pg_dump
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
template0
not
template1, for example:
.sp
.if n \{\
.RS 4
.\}
.nf
CREATE DATABASE foo WITH TEMPLATE template0;
.fi
.if n \{\
.RE
.\}
.PP
When a data\-only dump is chosen and the option
\fB\-\-disable\-triggers\fR
is used,
pg_dump
emits commands to disable triggers on user tables before inserting the data, and then 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\&.
.PP
The dump file produced by
pg_dump
does not contain the statistics used by the optimizer to make query planning decisions\&. Therefore, it is wise to run
\fBANALYZE\fR
after restoring from a dump file to ensure optimal performance; see
Section 23.1.3, \(lqUpdating Planner Statistics\(rq, in the documentation
and
Section 23.1.6, \(lqThe Autovacuum Daemon\(rq, in the documentation
for more information\&. The dump file also does not contain any
\fBALTER DATABASE \&.\&.\&. SET\fR
commands; these settings are dumped by
\fBpg_dumpall\fR(1), along with database users and other installation\-wide settings\&.
.PP
Because
pg_dump
is used to transfer data to newer versions of
PostgreSQL, the output of
pg_dump
can be expected to load into
PostgreSQL
server versions newer than
pg_dump\*(Aqs version\&.
pg_dump
can also dump from
PostgreSQL
servers older than its own version\&. (Currently, servers back to version 7\&.0 are supported\&.) However,
pg_dump
cannot dump from
PostgreSQL
servers newer than its own major version; it will refuse to even try, rather than risk making an invalid dump\&. Also, it is not guaranteed that
pg_dump\*(Aqs output can be loaded into a server of an older major version \(em not even if the dump was taken from a server of that version\&. Loading a dump file into an older server may require manual editing of the dump file to remove syntax not understood by the older server\&. Use of the
\fB\-\-quote\-all\-identifiers\fR
option is recommended in cross\-version cases, as it can prevent problems arising from varying reserved\-word lists in different
PostgreSQL
versions\&.
.SH "EXAMPLES"
.PP
To dump a database called
mydb
into a SQL\-script file:
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBpg_dump mydb > db\&.sql\fR
.fi
.if n \{\
.RE
.\}
.PP
To reload such a script into a (freshly created) database named
newdb:
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBpsql \-d newdb \-f db\&.sql\fR
.fi
.if n \{\
.RE
.\}
.PP
To dump a database into a custom\-format archive file:
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBpg_dump \-Fc mydb > db\&.dump\fR
.fi
.if n \{\
.RE
.\}
.PP
To dump a database into a directory\-format archive:
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBpg_dump \-Fd mydb \-f dumpdir\fR
.fi
.if n \{\
.RE
.\}
.PP
To reload an archive file into a (freshly created) database named
newdb:
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBpg_restore \-d newdb db\&.dump\fR
.fi
.if n \{\
.RE
.\}
.PP
To dump a single table named
mytab:
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBpg_dump \-t mytab mydb > db\&.sql\fR
.fi
.if n \{\
.RE
.\}
.PP
To dump all tables whose names start with
emp
in the
detroit
schema, except for the table named
employee_log:
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBpg_dump \-t \*(Aqdetroit\&.emp*\*(Aq \-T detroit\&.employee_log mydb > db\&.sql\fR
.fi
.if n \{\
.RE
.\}
.PP
To dump all schemas whose names start with
east
or
west
and end in
gsm, excluding any schemas whose names contain the word
test:
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBpg_dump \-n \*(Aqeast*gsm\*(Aq \-n \*(Aqwest*gsm\*(Aq \-N \*(Aq*test*\*(Aq mydb > db\&.sql\fR
.fi
.if n \{\
.RE
.\}
.PP
The same, using regular expression notation to consolidate the switches:
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBpg_dump \-n \*(Aq(east|west)*gsm\*(Aq \-N \*(Aq*test*\*(Aq mydb > db\&.sql\fR
.fi
.if n \{\
.RE
.\}
.PP
To dump all database objects except for tables whose names begin with
ts_:
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBpg_dump \-T \*(Aqts_*\*(Aq mydb > db\&.sql\fR
.fi
.if n \{\
.RE
.\}
.PP
To specify an upper\-case or mixed\-case name in
\fB\-t\fR
and related switches, you need to double\-quote the name; else it will be folded to lower case (see
Patterns)\&. But double quotes are special to the shell, so in turn they must be quoted\&. Thus, to dump a single table with a mixed\-case name, you need something like
.sp
.if n \{\
.RS 4
.\}
.nf
$ \fBpg_dump \-t \*(Aq"MixedCaseName"\*(Aq mydb > mytab\&.sql\fR
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
\fBpg_dumpall\fR(1), \fBpg_restore\fR(1), \fBpsql\fR(1)
