【问题标题】:How backup and restore only list(name) databases, roles and right for databases in postgresql without data?如何在没有数据的情况下仅备份和恢复 postgresql 中数据库的列表(名称)数据库、角色和权限?
【发布时间】:2017-10-13 05:12:06
【问题描述】:

如何在postgresql中只备份和恢复列表(名称)数据库、角色和权限,而没有数据?

用于获取列表数据库 postgresql 的 Bash 脚本

sudo -i -u postgres psql  -t -A -c 'SELECT datname FROM pg_database'

但是如何在 postgresql 中恢复角色和数据库的数据库和关系呢?

沃尊回答:

使用数据库列表准备 sql 以创建使用 smth,例如:psql -c "选择'创建数据库'||datname||';'从 pg_database 那里没有 datistemplate 和 datname != 'postgres';" -At >cdbs.sql,创建 列表中的数据库,对新集群使用 psql -f cdbs.sql

但所有恢复的数据库都有所有者 postgres。 如何使用所有者恢复数据库? 谢谢

【问题讨论】:

  • 对没有关系的关系的权利?..

标签: postgresql psql pg-dump


【解决方案1】:

从头顶开始 - 尝试:

  1. 要获取所有角色,请使用pg_dumpall -g
  2. 要获得权限,请使用pg_dump -s >to_file.sql,然后使用psql -f to_file.sql 忽略创建错误。
  3. 要使用数据库列表准备 sql 以进行创建,请使用类似 psql -c "select 'create database '||datname||';' from pg_database where not datistemplate and datname != 'postgres';" -At >cdbs.sql 的方法,要从列表创建数据库,请针对新集群使用 psql -f cdbs.sql

【讨论】:

  • 但是如何从列表中创建数据库?
  • 添加到答案中
  • 如何从列表中创建数据库?谢谢
  • 只需将生成的行应用于新集群。更新答案
  • 你能写个小例子吗?
猜你喜欢
  • 1970-01-01
  • 2015-09-22
  • 2017-07-10
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多