如何在pgcopydb copy table-data时修改目标数据库Schema?
解决pgcopydb跨Schema复制表数据的方法
要将源库public schema下的表数据复制到目标库schema1 schema中,pgcopydb copy table-data本身没有直接修改Schema的单一参数,但可以通过以下两种方式实现:
方法一:指定完整表名映射
直接在命令中明确源表和目标表的完整限定名称:
- 先确保目标数据库已创建
schema1:CREATE SCHEMA schema1; - 确保目标库
schema1下存在与源表结构一致的表(可通过CREATE TABLE schema1.tbl AS SELECT * FROM public.tbl LIMIT 0;或pg_dump/pg_restore复制表结构)。 - 执行数据复制命令:
pgcopydb copy table-data --source "postgres://源库用户@源库地址/源库名" --target "postgres://目标库用户@目标库地址/目标库名" public.目标表名 schema1.目标表名
方法二:使用表映射参数(批量场景更高效)
如果需要复制多个表,可使用--table-map参数指定映射关系:
- 单表映射:
pgcopydb copy table-data --source SOURCE_URI --target TARGET_URI --table-map public.tbl1:schema1.tbl1 - 多表映射:可以多次添加
--table-map,或者将映射写入配置文件(比如table-maps.txt),每行一个映射规则:
然后执行命令:public.tbl1:schema1.tbl1 public.tbl2:schema1.tbl2pgcopydb copy table-data --source SOURCE_URI --target TARGET_URI --table-map @table-maps.txt
注意:执行前需确认目标表结构与源表完全匹配,否则可能出现数据插入失败的问题。
内容的提问来源于stack exchange,提问作者Nikhil VJ
相关产品推荐
相关产品推荐

