将许多 postgresql 数据库分组到不同的模式到同一个数据库中

Group many postgresql databases into separate schemas into same database

我们有许多具有相同结构的 postgresql 数据库,每个数据库仅使用 public 模式。

如何使用单独的模式将它们全部分组到一个数据库中?

您可以转储数据库定义和数据,通过将默认架构作为您选择的任何内容来编辑输出,然后运行将脚本放回数据库中。

记得以 SQL 格式进行转储,默认自定义格式的 pg_dump 将不起作用。架构更改只需要对

这样的行进行更改

SET search_path TO *whateverschema*

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

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

我忘了post所有klin评论后的答案就是答案,这一步就是解决方案,

内部 customer_x 数据库:

alter schema public rename to customer_x;

然后取pg_dump customer_x:

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

在新的联合数据库中:

DROP schema customer_x CASCADE;
create schema customer_x;

然后加载 customer_x 的转储:

psql "conglomerated_database" -f customer_x.sql