将数据从Postgres数据库移动到其他所有者的数据库

时间:2019-04-30 12:50:43

标签: postgresql

我有两个具有相同结构和表的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 ,而无需在还原后手动更新用户权限。

1 个答案:

答案 0 :(得分:0)

是的,您可以使用pg_dump来指定您不想导出所有权:

  • -O(或--no-owner)不导出所有权
  • -x(或--no-privileges)防止转储访问权限(授予/撤消命令)
    pg_dump db_name -O -x > output_file