我有两个服务器(以及两个数据库,每个服务器来自pgAdmin上的服务器):
第一台服务器用于测试,第二台服务器是客户端将在其上工作的真实服务器。
这两个数据库有相同的表:第一个表上有9个表,第二个表上有9个表。
但是在测试服务器上,我已经测试了约束密钥(Check,foreign,unique,not null),并准备在服务器2上部署。
我如何只复制那些约束?
非常感谢你。
答案 0 :(得分:0)
最简单的方法是使用命令行pg_dump工具,该工具包含在所有PostgreSQL安装中。
创建目标数据库的备份:
$ pg_dump -h /var/run/postgresql/ -d prod -Fd -f prod.pg_dump
创建源数据库架构的备份:
$ pg_dump -h /var/run/postgresql/ -d test --section=pre-data --section=post_data -Fd -f test_schema.pg_dump
删除目标数据库:
postgres=# drop database prod;
重新创建空目标数据库:
postgres=# create database prod;
导入目标数据库:
$ pg_restore -d prod --section=pre-data test_schema.pg_dump
$ pg_restore -d prod --section=data prod.pg_dump
$ pg_restore -d prod --section=post-data test_schema.pg_dump
分析目标数据库:
prod=> analyze;
这可以通过正确恢复并pg_restore -j
正确使用来优化。
您可能会考虑将来适当的schema change management solution。