database - 如何自动化 postgres 函数和 View 的导入和导出

标签 database postgresql

我有一些项目使用遗留的 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/

相关文章:

sql - 如果存在重复行,则增加 SQL 数据库中的列值

database - oracle多用户功能

php - 未成功使用 JOIN 查询 MySQL 数据库与 PHP

sql - Rails/PostgreSQL - 查询以更新添加 1 天的所有日期

sql - PostgreSQL - 将表连接到自身

postgresql - Postgresql 中的数组是否存在反向重叠 (&&)?

mysql - 如何在 Rails 3 + Postgres 中使用自定义 sql 查询检索 BOOLEANS?

android - 如何在android sqlite数据库中使用查询

javascript - nodejs sqlite 与 console.log() 所有行有关的问题

java - c3po 辅助线程会死锁