mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Doc: recommend "psql -X" for restoring pg_dump scripts.
This practice avoids possible problems caused by non-default psql options, such as disabling AUTOCOMMIT. Author: Shinya Kato <Shinya11.Kato@oss.nttdata.com> Reviewed-by: Robert Treat <rob@xzilla.net> Discussion: https://postgr.es/m/96ff23a5d858ff72ca8e823a014d16fe@oss.nttdata.com Backpatch-through: 13
This commit is contained in:
		@@ -106,10 +106,10 @@ pg_dump <replaceable class="parameter">dbname</replaceable> > <replaceable cl
 | 
			
		||||
 | 
			
		||||
   <para>
 | 
			
		||||
    Text files created by <application>pg_dump</application> are intended to
 | 
			
		||||
    be read in by the <application>psql</application> program. The
 | 
			
		||||
    general command form to restore a dump is
 | 
			
		||||
    be read by the <application>psql</application> program using its default
 | 
			
		||||
    settings. The general command form to restore a text dump is
 | 
			
		||||
<synopsis>
 | 
			
		||||
psql <replaceable class="parameter">dbname</replaceable> < <replaceable class="parameter">dumpfile</replaceable>
 | 
			
		||||
psql -X <replaceable class="parameter">dbname</replaceable> < <replaceable class="parameter">dumpfile</replaceable>
 | 
			
		||||
</synopsis>
 | 
			
		||||
    where <replaceable class="parameter">dumpfile</replaceable> is the
 | 
			
		||||
    file output by the <application>pg_dump</application> command. The database <replaceable
 | 
			
		||||
@@ -117,11 +117,17 @@ psql <replaceable class="parameter">dbname</replaceable> < <replaceable class
 | 
			
		||||
    command, so you must create it yourself from <literal>template0</literal>
 | 
			
		||||
    before executing <application>psql</application> (e.g., with
 | 
			
		||||
    <literal>createdb -T template0 <replaceable
 | 
			
		||||
    class="parameter">dbname</replaceable></literal>).  <application>psql</application>
 | 
			
		||||
    class="parameter">dbname</replaceable></literal>).
 | 
			
		||||
    To ensure <application>psql</application> runs with its default settings,
 | 
			
		||||
    use the <option>-X</option> (<option>--no-psqlrc</option>) option.
 | 
			
		||||
    <application>psql</application>
 | 
			
		||||
    supports options similar to <application>pg_dump</application> for specifying
 | 
			
		||||
    the database server to connect to and the user name to use. See
 | 
			
		||||
    the <xref linkend="app-psql"/> reference page for more information.
 | 
			
		||||
    Non-text file dumps are restored using the <xref
 | 
			
		||||
   </para>
 | 
			
		||||
 | 
			
		||||
   <para>
 | 
			
		||||
    Non-text file dumps should be restored using the <xref
 | 
			
		||||
    linkend="app-pgrestore"/> utility.
 | 
			
		||||
   </para>
 | 
			
		||||
 | 
			
		||||
@@ -141,7 +147,7 @@ psql <replaceable class="parameter">dbname</replaceable> < <replaceable class
 | 
			
		||||
    behavior and have <application>psql</application> exit with an
 | 
			
		||||
    exit status of 3 if an SQL error occurs:
 | 
			
		||||
<programlisting>
 | 
			
		||||
psql --set ON_ERROR_STOP=on <replaceable>dbname</replaceable> < <replaceable>dumpfile</replaceable>
 | 
			
		||||
psql -X --set ON_ERROR_STOP=on <replaceable>dbname</replaceable> < <replaceable>dumpfile</replaceable>
 | 
			
		||||
</programlisting>
 | 
			
		||||
    Either way, you will only have a partially restored database.
 | 
			
		||||
    Alternatively, you can specify that the whole dump should be
 | 
			
		||||
@@ -160,7 +166,7 @@ psql --set ON_ERROR_STOP=on <replaceable>dbname</replaceable> < <replaceable>
 | 
			
		||||
    write to or read from pipes makes it possible to dump a database
 | 
			
		||||
    directly from one server to another, for example:
 | 
			
		||||
<programlisting>
 | 
			
		||||
pg_dump -h <replaceable>host1</replaceable> <replaceable>dbname</replaceable> | psql -h <replaceable>host2</replaceable> <replaceable>dbname</replaceable>
 | 
			
		||||
pg_dump -h <replaceable>host1</replaceable> <replaceable>dbname</replaceable> | psql -X -h <replaceable>host2</replaceable> <replaceable>dbname</replaceable>
 | 
			
		||||
</programlisting>
 | 
			
		||||
   </para>
 | 
			
		||||
 | 
			
		||||
@@ -205,7 +211,7 @@ pg_dumpall > <replaceable>dumpfile</replaceable>
 | 
			
		||||
</synopsis>
 | 
			
		||||
    The resulting dump can be restored with <application>psql</application>:
 | 
			
		||||
<synopsis>
 | 
			
		||||
psql -f <replaceable class="parameter">dumpfile</replaceable> postgres
 | 
			
		||||
psql -X -f <replaceable class="parameter">dumpfile</replaceable> postgres
 | 
			
		||||
</synopsis>
 | 
			
		||||
    (Actually, you can specify any existing database name to start from,
 | 
			
		||||
    but if you are loading into an empty cluster then <literal>postgres</literal>
 | 
			
		||||
 
 | 
			
		||||
@@ -1410,6 +1410,14 @@ CREATE DATABASE foo WITH TEMPLATE template0;
 | 
			
		||||
   subscriber if the subscription had been originally created with
 | 
			
		||||
   <literal>two_phase = true</literal> option.
 | 
			
		||||
  </para>
 | 
			
		||||
 | 
			
		||||
  <para>
 | 
			
		||||
   It is generally recommended to use the <option>-X</option>
 | 
			
		||||
   (<option>--no-psqlrc</option>) option when restoring a database from a
 | 
			
		||||
   plain-text <application>pg_dump</application> script to ensure a clean
 | 
			
		||||
   restore process and prevent potential conflicts with
 | 
			
		||||
   non-default <application>psql</application> configurations.
 | 
			
		||||
  </para>
 | 
			
		||||
 </refsect1>
 | 
			
		||||
 | 
			
		||||
 <refsect1 id="pg-dump-examples" xreflabel="Examples">
 | 
			
		||||
@@ -1427,7 +1435,7 @@ CREATE DATABASE foo WITH TEMPLATE template0;
 | 
			
		||||
   <literal>newdb</literal>:
 | 
			
		||||
 | 
			
		||||
<screen>
 | 
			
		||||
<prompt>$</prompt> <userinput>psql -d newdb -f db.sql</userinput>
 | 
			
		||||
<prompt>$</prompt> <userinput>psql -X -d newdb -f db.sql</userinput>
 | 
			
		||||
</screen>
 | 
			
		||||
  </para>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -786,6 +786,17 @@ PostgreSQL documentation
 | 
			
		||||
   database creation will fail for databases in non-default
 | 
			
		||||
   locations.
 | 
			
		||||
  </para>
 | 
			
		||||
 | 
			
		||||
  <para>
 | 
			
		||||
   It is generally recommended to use the <option>-X</option>
 | 
			
		||||
   (<option>--no-psqlrc</option>) option when restoring a database from a
 | 
			
		||||
   <application>pg_dumpall</application> script to ensure a clean restore
 | 
			
		||||
   process and prevent potential conflicts with non-default
 | 
			
		||||
   <application>psql</application> configurations. Additionally, because
 | 
			
		||||
   the <application>pg_dumpall</application> script may
 | 
			
		||||
   include <application>psql</application> meta-commands, it may be
 | 
			
		||||
   incompatible with clients other than <application>psql</application>.
 | 
			
		||||
  </para>
 | 
			
		||||
 </refsect1>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -802,9 +813,9 @@ PostgreSQL documentation
 | 
			
		||||
  <para>
 | 
			
		||||
   To restore database(s) from this file, you can use:
 | 
			
		||||
<screen>
 | 
			
		||||
<prompt>$</prompt> <userinput>psql -f db.out postgres</userinput>
 | 
			
		||||
<prompt>$</prompt> <userinput>psql -X -f db.out -d postgres</userinput>
 | 
			
		||||
</screen>
 | 
			
		||||
   It is not important to which database you connect here since the
 | 
			
		||||
   It is not important which database you connect to here since the
 | 
			
		||||
   script file created by <application>pg_dumpall</application> will
 | 
			
		||||
   contain the appropriate commands to create and connect to the saved
 | 
			
		||||
   databases.  An exception is that if you specified <option>--clean</option>,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user