中,源数据在“公共”架构下,而在目标db中,我必须将其放在不同的模式下,例如“ schema1”。在
pgcopydb copy table-data
过程中,我无法找到更改此模式名称的方法。如何做?ref:https://pgcopydb.readthedocs.io/
https://github.com/dimitri/pgcopydb?tab = readme-ov-file
Edit:我找到了一个部分,但根本无法理解这一点:
copy table-data
。 如果架构destination db上是空的,没有流量,或者您可以负担得起维护窗口,则可以使用临时名称交换:
pgcopydb copy table-data
如果您实现了仅使用私有和/或启用public
access secure架构模式仅在明确,完全合格的情况下才能访问
alter schema public rename to old_public_temporarily_renamed;
create schema public;
--run your `pgcopydb` from `public` on your source to this `public`, then
alter schema public rename to schema1;
alter schema old_public_temporarily_renamed rename to public;
如果表格未占用在目标上public
架构/名称空间,则也可以通过视图重定向数据
public
对于每个目标对象。这种类型的视图是uupdatable/插入的,重定向插入的记录。让工作写信给他们,完成后将其放下。如果您仅在内容的部分移动部分,则仅适用于该架构中的某些对象。
如果这个名字不那么简短,通用且恰好是一个键,您可以
create view public.table1 as table schema1.table1;
可能缺少重命名的选项,因为它需要一个(大而难以添加的)SQL解析器才能安全可靠地找到并替换标识符的所有实例,而不会意外击中表,类型,列,列和列和其他名称 - 如果是pg_dump ... | sed 's/src_schema_name/new_schema_name/g' | psql ...
,也弄乱了倾倒