如何从一个模式导出数据以插入具有相同结构的另一个模式

时间:2014-07-22 08:07:25

标签: sql database postgresql pg

我想将我的所有数据移到我的' test1'所有表上的架构,其中id> 5000

所以,我确实导出了' test1' 架构并创建了新的临时架构名称' test1_new' 然后我这样做了所有表

INSERT INTO test1_new.{table_name} SELECT * FROM test1.{table_name}

然后我想要的所有数据都被移到' test1_new'然后我重命名了他们

test1 --- to ----> test1_old

test1_new --- to ----> TEST1

然后我做

pg_dump -a -f test1.data -F c -n test1 -v -U myuser mydatabase

所以,我得到 test1.data ,其中包含我要移动的所有数据

然后我使用 pg_restore

移动到我的主数据库
pg_restore -a --host=192.168.1.2 --port=4444 --username=myuser --password --dbname=mydatabase --role=myuser -c /mnt/databackup/test1.data

我收到了这个错误

pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 94497; 0 164460306 TABLE DATA assign_suggestions sodb
pg_restore: [archiver (db)] COPY failed for table "assign_suggestions": ERROR:  duplicate key value violates unique constraint "assign_suggestions_pkey"
DETAIL:  Key (id)=(16404) already exists.
CONTEXT:  COPY assign_suggestions, line 1
pg_restore: [archiver (db)] Error from TOC entry 94503; 0 164460330 TABLE DATA assigns sodb
pg_restore: [archiver (db)] COPY failed for table "assigns": ERROR:  duplicate key value violates unique constraint "assigns_pkey"
DETAIL:  Key (id)=(16664) already exists.
CONTEXT:  COPY assigns, line 1  

和很多这样的

我做错了什么?在我的主数据库中已有一些记录,但我确定该ID不重复。

我该如何解决这个问题?我也试过创建一个没有约束的克隆模式,但是当我尝试pg_restore时我仍然遇到这样的错误..我不知道会发生什么......

无论如何,我可以在架构中的所有表上移动我的数据,条件是id> 5000到我的主要使用数据库?

1 个答案:

答案 0 :(得分:0)

而不是:

pg_restore -a --host=192.168.1.2 --port=4444 --username=myuser --password --  dbname=mydatabase --role=myuser -c /mnt/databackup/test1.data

使用:

pg_restore -a --host=192.168.1.2 --port=4444 --username=myuser --password --  dbname=mydatabase --role=myuser -c /mnt/databackup/test1.data --schema=*YOUR TARGET SCHEMA NAME*