我有两个具有相同结构和表的postgres数据库,它们托管在同一台服务器上,这些数据库由不同的用户拥有:
数据库1 : owner1
数据库2 : owner2
我想知道将 database1 的内容复制到 database2 (覆盖 database2 的原始内容)的最佳方法。
我尝试了 pg_dump 和 pg_restore ,但是转储将显式指定 owner1 作为表的所有者,然后在尝试时出现权限问题使用 owner2 从 database2 获取数据。我必须手动将 database2 上的所有特权重新授予 owner2 ,然后将所有表的所有者再次设置为 owner2 。
我的方法:
pg_dump database1 > database1.psql
postgres=# drop database database2;
postgres=# create database database2;
psql --d database2 -f database1.psql
是否有一种更简单的方法将数据从 database1 复制到 database2 ,而无需在还原后手动更新用户权限。
答案 0 :(得分:0)
是的,您可以使用pg_dump来指定您不想导出所有权:
-O
(或--no-owner
)不导出所有权-x
(或--no-privileges
)防止转储访问权限(授予/撤消命令) pg_dump db_name -O -x > output_file