Postgresql 合并postgres数据

Postgresql 合并postgres数据,postgresql,postgresql-9.2,Postgresql,Postgresql 9.2,我有两个postgresql数据库中的数据,需要合并到1中。需要明确的是,这两个数据库中都有特定日期的“良好”数据,需要合并。这不仅仅是将数据从一个附加到另一个。换句话说,假设表foo有一个串行id字段。两个数据库都有一个ID为5555的foo,两个值都有效(但不同)。因此,目标数据库的foo保持5555,新记录应该添加一个新ID nextval(foo_ID_seq) 所以,这是一个大混乱 我的想法是在目标数据库中创建一个tmp模式,并从源数据库复制所需的数据。然后我需要基本上“插入”数据。插

我有两个postgresql数据库中的数据,需要合并到1中。需要明确的是,这两个数据库中都有特定日期的“良好”数据,需要合并。这不仅仅是将数据从一个附加到另一个。换句话说,假设表foo有一个串行id字段。两个数据库都有一个ID为5555的foo,两个值都有效(但不同)。因此,目标数据库的foo保持5555,新记录应该添加一个新ID nextval(foo_ID_seq)

所以,这是一个大混乱

我的想法是在目标数据库中创建一个tmp模式,并从源数据库复制所需的数据。然后我需要基本上“插入”数据。插入带有新想法的新记录(更新外键),并更新两个数据库中存在的记录

我不相信有什么工具能帮我解决这个问题

我的问题

如何最好地处理生成新id?我知道我可以通过选择来完成,只需省去id列,但这需要大量的输入,而且速度会很慢。我的想法是为这些表创建一个临时触发器,它将覆盖执行插入时提供的id

最后注意:

  • 两个数据库都处于脱机状态。我是唯一能找到他们的人
  • 两个数据库具有完全相同的模式
  • 目标数据库是9.2

尝试使用以下方法:

INSERT INTO A(id, f1, f2)
SELECT nextval('A_seq'), tmp_A.f1, tmp_A.f2
FROM tmp_A
WHERE tmp_A.id IN (select A.id FROM A);

INSERT INTO A(id, f1, f2)
SELECT tmp_A.id, tmp_A.f1, tmp_A.f2
FROM tmp_A
WHERE tmp_A.id NOT IN (select A.id FROM A);
想法-使用一个
INSERT。。选择..
插入id字段和其他
插入中存在冲突的数据。。选择..
插入数据而不产生冲突

或者只需为每个插入的记录生成新的
id

INSERT INTO A(id, f1, f2)
SELECT nextval('A_seq'), tmp_A.f1, tmp_A.f2
FROM tmp_A;

对我知道我可以做选择。但是,有些表有50列。我尽量避免在一天剩下的时间里为所有表键入insert/selects。@DavidS您可以使用and表动态生成查询。