pgcopydb复制时更改模式名称

问题描述 投票:0回答:1

中,源数据在“公共”架构下,而在目标db中,我必须将其放在不同的模式下,例如“ schema1”。在

pgcopydb copy table-data
过程中,我无法找到更改此模式名称的方法。如何做?
ref:

https://pgcopydb.readthedocs.io/

https://github.com/dimitri/pgcopydb?tab = readme-ov-file
Edit:我找到了一个部分,但根本无法理解这一点:

https://pgcopydb.readthedocs.io/en/latest/tutorial.html#how-wow-how-to-to-to-eedit-the-schema-when-chema-when-chema-when-copying -a-database

postgresql database-migration pgcopydb
1个回答
0
投票
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 ... ,也弄乱了倾倒

public语句。


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.