mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Add pg_dump -X no-data-for-failed-tables option to suppress loading data
if table creation failed (the table already exists). Martin Pitt
This commit is contained in:
parent
6d0f5ea574
commit
c61607bd52
@ -1,4 +1,4 @@
|
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.59 2006/03/17 16:02:47 petere Exp $ -->
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.60 2006/08/01 18:21:44 momjian Exp $ -->
|
||||||
|
|
||||||
<refentry id="APP-PGRESTORE">
|
<refentry id="APP-PGRESTORE">
|
||||||
<refmeta>
|
<refmeta>
|
||||||
@ -360,20 +360,6 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>-X use-set-session-authorization</option></term>
|
|
||||||
<term><option>--use-set-session-authorization</option></term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Output SQL-standard <command>SET SESSION AUTHORIZATION</> commands
|
|
||||||
instead of <command>ALTER OWNER</> commands to determine object
|
|
||||||
ownership. This makes the dump more standards compatible, but
|
|
||||||
depending on the history of the objects in the dump, may not restore
|
|
||||||
properly.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>-X disable-triggers</></term>
|
<term><option>-X disable-triggers</></term>
|
||||||
<term><option>--disable-triggers</></term>
|
<term><option>--disable-triggers</></term>
|
||||||
@ -397,6 +383,34 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-X use-set-session-authorization</option></term>
|
||||||
|
<term><option>--use-set-session-authorization</option></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Output SQL-standard <command>SET SESSION AUTHORIZATION</> commands
|
||||||
|
instead of <command>ALTER OWNER</> commands to determine object
|
||||||
|
ownership. This makes the dump more standards compatible, but
|
||||||
|
depending on the history of the objects in the dump, may not restore
|
||||||
|
properly.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-X no-data-for-failed-tables</></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
By default, table data objects are restored even if the
|
||||||
|
associated table could not be successfully created (e. g.
|
||||||
|
because it already exists). With this option, such table
|
||||||
|
data is silently ignored. This is useful for dumping and
|
||||||
|
restoring databases with tables which contain auxiliary data
|
||||||
|
for PostgreSQL extensions (e. g. PostGIS).
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup.h,v 1.41 2006/07/14 14:52:26 momjian Exp $
|
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup.h,v 1.42 2006/08/01 18:21:44 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -109,6 +109,7 @@ typedef struct _restoreOptions
|
|||||||
char *pghost;
|
char *pghost;
|
||||||
char *username;
|
char *username;
|
||||||
int ignoreVersion;
|
int ignoreVersion;
|
||||||
|
int noDataForFailedTables;
|
||||||
int requirePassword;
|
int requirePassword;
|
||||||
int exit_on_error;
|
int exit_on_error;
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.134 2006/07/18 17:42:00 momjian Exp $
|
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.135 2006/08/01 18:21:44 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -278,6 +278,23 @@ RestoreArchive(Archive *AHX, RestoreOptions *ropt)
|
|||||||
_printTocEntry(AH, te, ropt, false, false);
|
_printTocEntry(AH, te, ropt, false, false);
|
||||||
defnDumped = true;
|
defnDumped = true;
|
||||||
|
|
||||||
|
/* If we could not create a table, ignore the respective TABLE DATA if
|
||||||
|
* -X no-data-for-failed-tables is given */
|
||||||
|
if (ropt->noDataForFailedTables && AH->lastErrorTE == te && strcmp (te->desc, "TABLE") == 0) {
|
||||||
|
TocEntry *tes, *last;
|
||||||
|
|
||||||
|
ahlog (AH, 1, "table %s could not be created, will not restore its data\n", te->tag);
|
||||||
|
|
||||||
|
for (last = te, tes = te->next; tes != AH->toc; last = tes, tes = tes->next) {
|
||||||
|
if (strcmp (tes->desc, "TABLE DATA") == 0 && strcmp (tes->tag, te->tag) == 0 &&
|
||||||
|
strcmp (tes->namespace ? tes->namespace : "", te->namespace ? te->namespace : "") == 0) {
|
||||||
|
/* remove this node */
|
||||||
|
last->next = tes->next;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* If we created a DB, connect to it... */
|
/* If we created a DB, connect to it... */
|
||||||
if (strcmp(te->desc, "DATABASE") == 0)
|
if (strcmp(te->desc, "DATABASE") == 0)
|
||||||
{
|
{
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.79 2006/07/14 14:52:26 momjian Exp $
|
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.80 2006/08/01 18:21:44 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -252,6 +252,8 @@ main(int argc, char **argv)
|
|||||||
use_setsessauth = 1;
|
use_setsessauth = 1;
|
||||||
else if (strcmp(optarg, "disable-triggers") == 0)
|
else if (strcmp(optarg, "disable-triggers") == 0)
|
||||||
disable_triggers = 1;
|
disable_triggers = 1;
|
||||||
|
else if (strcmp(optarg, "no-data-for-failed-tables") == 0)
|
||||||
|
opts->noDataForFailedTables = 1;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
@ -397,6 +399,9 @@ usage(const char *progname)
|
|||||||
printf(_(" -X use-set-session-authorization, --use-set-session-authorization\n"
|
printf(_(" -X use-set-session-authorization, --use-set-session-authorization\n"
|
||||||
" use SESSION AUTHORIZATION commands instead of\n"
|
" use SESSION AUTHORIZATION commands instead of\n"
|
||||||
" OWNER TO commands\n"));
|
" OWNER TO commands\n"));
|
||||||
|
printf(_(" -X no-data-for-failed-tables\n"
|
||||||
|
" do not restore data of tables which could not be\n"
|
||||||
|
" created\n"));
|
||||||
printf(_(" -1, --single-transaction restore as a single transaction\n"));
|
printf(_(" -1, --single-transaction restore as a single transaction\n"));
|
||||||
|
|
||||||
printf(_("\nConnection options:\n"));
|
printf(_("\nConnection options:\n"));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user