将许多postgresql数据库组合成单独的模式到同一个数据库中

时间:2015-06-12 20:49:23

标签: postgresql schema

我们有许多postgresql数据库具有相同的结构,每个数据库只使用公共shcema。

如何使用单独的模式将所有这些组合在一个数据库中?

2 个答案:

答案 0 :(得分:1)

您可以转储数据库定义和数据,通过将默认架构放在您选择的任何位置来编辑输出,并将脚本运行回数据库。

请记住以SQL格式进行转储,使用默认自定义格式的pg_dump无法正常工作。架构更改只需要对

等行进行更改

SET search_path TO *whateverschema*

如果您不想编辑转储(可能它们非常大),您当然也可以将它们逐个恢复到公共模式,将表格更改为所需的模式,然后重复下一个。

遗憾的是,没有特殊方法可以将现有数据库转换为另一个数据库中的模式。

答案 1 :(得分:0)

我忘记发布答案了,所有klin评论都是答案,这一步是解决方案,

在customer_x数据库中:

  

将架构公共重命名更改为customer_x;

然后接受pg_dump customer_x:

  

pg_dump" customer_x" --schema" customer_x" -f customer_x.sql

新的集团数据库内部:

  

DROP架构customer_x CASCADE;
  创建架构customer_x;

然后加载customer_x的转储:

  

psql" conglomerated_database" -f customer_x.sql