pg_dump

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
PG_DUMP(1)		PostgreSQL Client Applications		   PG_DUMP(1)



NAME
       pg_dump	-  extract  a PostgreSQL database into a script file or other
       archive file


SYNOPSIS
       pg_dump [ option... ]  [ dbname ]

DESCRIPTION
       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).

       Dumps  can  be  output  in  script or archive file formats. The script
       files are in plain-text format and contain the SQL  commands  required
       to  reconstruct the database to the state it was in at the time it was
       saved. To restore these scripts, use psql(1).  They  can	 be  used  to
       reconstruct  the	 database  even on other machines and other architec-
       tures, with some modifications even on other SQL database products.

       The alternative archive file formats that are meant to  be  used	 with
       pg_restore(1)  to rebuild the database, and they also allow pg_restore
       to be selective about what is restored, or even to reorder  the	items
       prior  to  being	 restored.  The archive files are also designed to be
       portable across architectures.

       When used with one of the  archive  file	 formats  and  combined	 with
       pg_restore,  pg_dump  provides a flexible archival and transfer mecha-
       nism.  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 ‘‘custom’’ format (-Fc). It allows for selection
       and reordering of all archived items, and is  compressed	 by  default.
       The  tar	 format	 (-Ft)	is  not	 compressed and it is not possible to
       reorder data when loading, but it is otherwise quite  flexible;	more-
       over, it can be manipulated with other tools such as tar.

       While  running pg_dump, one should examine the output for any warnings
       (printed on standard error), especially in light	 of  the  limitations
       listed below.

OPTIONS
       The following command-line options are used to control the output for-
       mat.

       dbname Specifies the name of the database to be dumped. If this is not
	      specified, the environment variable PGDATABASE is used. If that
	      is not set, the user name specified for the connection is used.

       -a

       --data-only
	      Dump only the data, not the schema (data definitions).

	      This  option  is only meaningful for the plain-text format. For
	      the other formats, you may specify the  option  when  you	 call
	      pg_restore.

       -b

       --blobs
	      Include large objects in dump.

       -c

       --clean
	      Output  commands to clean (drop) database objects prior to (the
	      commands for) creating them.

	      This option is only meaningful for the plain-text	 format.  For
	      the  other  formats,  you	 may specify the option when you call
	      pg_restore.

       -C

       --create
	      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’t matter which database you  connect  to  before
	      running the script.)

	      This  option  is only meaningful for the plain-text format. For
	      the other formats, you may specify the  option  when  you	 call
	      pg_restore.

       -d

       --inserts
	      Dump data as INSERT commands (rather than COPY). This will make
	      restoration very slow; it is mainly  useful  for	making	dumps
	      that can be loaded into non-PostgreSQL databases. Note that the
	      restore may fail	altogether  if	you  have  rearranged  column
	      order.  The -D option is safer, though even slower.

       -D

       --column-inserts

       --attribute-inserts
	      Dump data as INSERT commands with explicit column names (INSERT
	      INTO table (column, ...) VALUES ...). This will  make  restora-
	      tion  very  slow; it is mainly useful for making dumps that can
	      be loaded into non-PostgreSQL databases.

       -f file

       --file=file
	      Send output to the specified file.  If  this  is	omitted,  the
	      standard output is used.

       -F format

       --format=format
	      Selects  the  format  of	the output.  format can be one of the
	      following:

	      p	     Output a plain-text SQL script file (default)

	      t	     Output a tar archive suitable for input into pg_restore.
		     Using  this  archive  format  allows  reordering  and/or
		     exclusion of schema elements at the time the database is
		     restored.	It  is	also  possible to limit which data is
		     reloaded at restore time.

	      c	     Output  a	custom	archive	 suitable  for	 input	 into
		     pg_restore.  This is the most flexible format in that it
		     allows reordering of data load as well  as	 schema	 ele-
		     ments. This format is also compressed by default.


       -i

       --ignore-version
	      Ignore  version  mismatch	 between  pg_dump  and	the  database
	      server.

	      pg_dump can handle databases from previous  releases  of	Post-
	      greSQL,  but  very old versions are not supported anymore (cur-
	      rently prior to 7.0).  Use this option if you need to  override
	      the  version  check  (and	 if pg_dump then fails, don’t say you
	      weren’t warned).

       -n namespace

       --schema=schema
	      Dump the contents of schema only. If this option is not  speci-
	      fied,  all  non-system  schemas  in the target database will be
	      dumped.

	      Note: In this mode, pg_dump makes no attempt to dump any	other
	      database objects that objects in the selected schema may depend
	      upon. Therefore, there is no guarantee that the  results	of  a
	      single-schema  dump  can be successfully restored by themselves
	      into a clean database.


       -o

       --oids Dump object identifiers (OIDs) 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.

       -O

       --no-owner
	      Do not output commands to set ownership of objects to match the
	      original database.  By  default,	pg_dump	 issues	 SET  SESSION
	      AUTHORIZATION  statements	 to  set  ownership of created schema
	      elements.	 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 -O.

	      This option is only meaningful for the plain-text	 format.  For
	      the  other  formats,  you	 may specify the option when you call
	      pg_restore.

       -R

       --no-reconnect
	      This option is obsolete but still accepted for  backwards	 com-
	      patibility.

       -s

       --schema-only
	      Dump only the schema (data definitions), no data.

       -S username

       --superuser=username
	      Specify the superuser user name to use when disabling triggers.
	      This is only relevant if --disable-triggers is used.  (Usually,
	      it’s  better to leave this out, and instead start the resulting
	      script as superuser.)

       -t table

       --table=table
	      Dump data for table only. It is possible for there to be multi-
	      ple  tables with the same name in different schemas; if that is
	      the case, all matching tables  will  be  dumped.	Specify	 both
	      --schema and --table to select just one table.

	      Note:  In this mode, pg_dump makes no attempt to dump any other
	      database objects that  the  selected  table  may	depend	upon.
	      Therefore,  there is no guarantee that the results of a single-
	      table dump can be successfully restored by  themselves  into  a
	      clean database.


       -v

       --verbose
	      Specifies	 verbose  mode.	 This  will  cause  pg_dump  to print
	      progress messages to standard error.

       -x

       --no-privileges

       --no-acl
	      Prevent dumping of access privileges (grant/revoke commands).

       -X use-set-session-authorization

       --use-set-session-authorization
	      This option is obsolete but still accepted for  backwards	 com-
	      patibility.   pg_dump  now  always  behaves in the way formerly
	      selected by this option.

       -X disable-triggers

       --disable-triggers
	      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.

	      Presently,  the commands emitted for --disable-triggers must be
	      done as superuser. So, you should also specify a superuser name
	      with -S, or preferably be careful to start the resulting script
	      as a superuser.

	      This option is only meaningful for the plain-text	 format.  For
	      the  other  formats,  you	 may specify the option when you call
	      pg_restore.

       -Z 0..9

       --compress=0..9
	      Specify the compression level to use in  archive	formats	 that
	      support  compression. (Currently only the custom archive format
	      supports compression.)


       The following command-line options  control  the	 database  connection
       parameters.

       -h host

       --host=host
	      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 PGHOST environment variable, if set,	else  a	 Unix  domain
	      socket connection is attempted.

       -p port

       --port=port
	      Specifies	 the TCP port or local Unix domain socket file exten-
	      sion  on	which  the  server  is	listening  for	 connections.
	      Defaults	to the PGPORT environment variable, if set, or a com-
	      piled-in default.

       -U username
	      Connect as the given user

       -W     Force a password prompt. This should  happen  automatically  if
	      the server requires password authentication.


ENVIRONMENT
       PGDATABASE

       PGHOST

       PGPORT

       PGUSER Default connection parameters.

DIAGNOSTICS
       pg_dump	internally  executes  SELECT statements. If you have problems
       running pg_dump, make sure you are able to select information from the
       database using, for example, psql(1).

NOTES
       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 dupli-
       cate definitions of the added objects. To make an empty database with-
       out  any local additions, copy from template0 not template1, for exam-
       ple:

       CREATE DATABASE foo WITH TEMPLATE template0;


       pg_dump has a few limitations:

       · When dumping a single table or as plain text, pg_dump does not	 han-
	 dle  large  objects.  Large  objects  must be dumped with the entire
	 database using one of the non-text archive formats.

       · When a data-only dump is chosen and the option --disable-triggers is
	 used,	pg_dump	 emits	commands  to  disable triggers on user tables
	 before inserting the data and commands to re-enable them  after  the
	 data has been inserted. If the restore is stopped in the middle, the
	 system catalogs may be left in the wrong state.


       Members of tar archives are limited to a size less than 8  GB.	(This
       is an inherent limitation of the tar file format.) Therefore this for-
       mat cannot be used if the textual representation of  a  table  exceeds
       that size. The total size of a tar archive and any of the other output
       formats is not limited, except possibly by the operating system.

       Once restored, it is wise to run ANALYZE on each restored table so the
       optimizer has useful statistics.

EXAMPLES
       To dump a database:

       $ pg_dump mydb > db.out


       To reload this database:

       $ psql -d database -f db.out


       To  dump	 a  database called mydb that contains large objects to a tar
       file:

       $ pg_dump -Ft -b mydb > db.tar


       To reload this database (with large objects) to an  existing  database
       called newdb:

       $ pg_restore -d newdb db.tar


HISTORY
       The  pg_dump  utility  first  appeared in Postgres95 release 0.02. The
       non-plain-text output formats were introduced  in  PostgreSQL  release
       7.1.

SEE ALSO
       pg_dumpall(1), pg_restore(1), psql(1)



Application			  2008-01-03			   PG_DUMP(1)