PostgreSQL数据库恢复使用pg_restore作为增量数据,而不覆盖或删除现有表



我有两个主机服务器s1和s2。在这两个服务器中,我都有一个名为n1的模式。现在,我对s1的模式n1中的一些表进行了一些更改。我希望对服务器s2的模式n1进行相同的更改。我计划做的是使用pg_dump对服务器s1的模式n1进行备份,并使用pg_restore在服务器s2中进行恢复。

对于备份和恢复,使用以下命令:

pg_dump -Fc -h XXXXX -U user -d dbname > test.dump
pg_restore  -h XXXXX -U user -d dbname < test.dump

但是当我使用pg_restore恢复时,我会得到以下错误:

pg_restore: while PROCESSING TOC:
pg_restore: from TOC entry 200; 1259 16435 TABLE table_name database_name
pg_restore: error: could not execute query: ERROR:  relation "address" already exists
Command was: CREATE TABLE public.table_name (
id integer NOT NULL,
status character varying(1) NOT NULL,
table_name1 character varying(80) NOT NULL,
table_name2 character varying(80),
table_name3 character varying(80),
location_id integer NOT NULL
);

你可以这样转储:

pg_dump -Fc -h XXXXX -U user --inserts --on-conflict-do-nothing --data-only -n n1 dbname > test.dump

恢复这样的转储将跳过与现有行具有主键或唯一约束冲突的行。选项--on-conflict-do-nothing可从上的v12获得

相关内容

  • 没有找到相关文章

最新更新