我们有一个开发Postgres数据库,其中一个开发人员已经创建了一个应用程序。是否有一个现有的查询将从role_table_grants表中提取信息并生成所有正确的语句以进入生产? PGAdmin将为某些事情创建所有生成脚本,但我没有找到一种较少的手动方式,而只是根据role_table_grants表手动编写所有语句。没有要求任何人花时间去创建它,只是想我会问是否有一些现有的迁移脚本可以提供帮助。
感谢。
答案 0 :(得分:3)
将架构转储到文件中;将pg_dump或pg_dumpall与CGPathMoveToPoint
选项一起使用。
然后使用--schema-only
获取所有GRANT和REVOKE语句。
在我的开发机器上,我可能会做这样的事情。
$ pg_dump -h localhost -p 5435 -U postgres --schema-only sandbox > sandbox.sql $ grep "^GRANT\|^REVOKE" sandbox.sql REVOKE ALL ON SCHEMA public FROM PUBLIC; REVOKE ALL ON SCHEMA public FROM postgres; GRANT ALL ON SCHEMA public TO postgres; [snip]
答案 1 :(得分:1)
也许pg_dumpall就是您所需要的。可能使用--schema-only
选项以便仅转储模式,而不是转储开发数据。
如果您不需要移动所有数据库,可以使用pg_dumpall --globals-only
转储角色(不属于任何特定数据库),然后使用pg_dump转储某个特定数据库。 / p>