我们有许多postgresql数据库具有相同的结构,每个数据库只使用公共shcema。
如何使用单独的模式将所有这些组合在一个数据库中?
答案 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