暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

比较 PostgreSQL 架构更改

原创 小小亮 2022-12-27
411

管理 PostgreSQL 的常规操作之一是定期更新数据库系统的体系结构。PostgreSQL 做得很好,允许人们以可靠的方式通过添加和删除列以及更新列数据类型等来更新模式、添加类型、函数、触发器或更改表。但是,没有内置机制来帮助识别差异,更不用说生成必要的 SQL 来轻松完成从开发环境到生产环境的更新。

因此,让我们谈谈模式更改的可能方法。

使用逻辑转储清单

识别从一个数据库到另一个数据库的模式之间变化的最简单方法是比较模式转储清单

以下示例演示了一种可以用来查找不同数据库上架构之间差异的方法:

例子:

-- create database schemas
create database db01
create database db01<br /><br /><br />

这个结果差异显示了两个模式之间所做的更改:






好消息是,有许多现有工具可以调和提议的模式设计和目标模式之间的差异:

  1. 商业产品可以以优雅高效的方式区分数据库之间的模式。研究,如谷歌,产生了人们可以使用的最流行的技术。
  2. 关于开源解决方案,有许多项目能够区分 Postgres 数据库模式。

使用 apgdiff 扩展

以下是开源工具apgdiff的示例实现。

Apgdiff 可以在 Postgres 社区存储库中找到。它比较两个模式转储文件并创建一个 SQL 输出文件,该文件在很大程度上适用于旧模式的升级:








以下示例演示了如何使用 apgdiff 更新开发环境和生产数据库架构之间的差异。

例子:


# EX 2: uses logical dumps
# notice the dumps are standard logical dumps and includes data
pg_dump db01 -Fc > db01.db
pg_dump db02 -Fc > db02.db
createdb db03 --template=db01
# this invocation assumes the resultant diff doesn’t require editing
apgdiff --ignore-start-with \
<(pg_restore -s -f - db01.db) \
<(pg_restore -s -f - db02.db) \
| psql -1 db03

最后修改时间:2022-12-27 11:59:19
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论