我有一些项目使用遗留的 PostgreSQL 数据库,它使用 19 个存储过程(函数)和大约 70 个 View 。
现在,我们对实时数据库进行了一些更新,并且随着函数的更改,由于 postgres 的限制,需要删除并重新创建所有函数和 View ,我们花了相当多的时间来做这件事。
是否有一种自动更改 postgress 中的函数和 View 的方法,它会考虑依赖关系并按正确的顺序执行。
我们有基本 View ,然后创建上层 View ......它有点复杂的数据库,至少对我来说 :)
谢谢
最佳答案
我认为最简单的方法是将数据库备份到文本文件:
pg_dump database_name > database_name.pg_dump
它们将处于正确的依赖顺序,否则从备份恢复数据库将很困难。您可以在备份文件中编辑函数和 View 定义,并将其恢复到新数据库。
如果数据库备份文件太大而无法在您的编辑器中进行编辑,从 Postgres 9.2 开始,您可以将其拆分为 3 个部分:
pg_dump --section=pre-data > database_name.1.pg_dump
pg_dump --section=data > database_name.2.pg_dump
pg_dump --section=post-data > database_name.3.pg_dump
您将只编辑第一部分,该部分很小。在旧版本中,您可以使用例如 split
效用。
如果您无法承受备份和恢复所需的停机时间,那将变得更加棘手。但我仍然建议使用备份文件。请记住,Postgres 支持事务中的 DDL——如果您在事务中导入函数和 View 并且出现错误,您可以简单地回滚所有更改、进行更正并重试。
关于database - 如何自动化 postgres 函数和 View 的导入和导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15392743/