用于创建我的 PostgreSQL 数据库的 DDL/SQL 脚本处于版本控制之下。理论上,对数据库模型的任何更改都会在源代码存储库中进行跟踪。
然而,在实践中,实时数据库的结构会发生“动态”更改,如果任何客户端脚本无法插入/选择/等数据,我将负责解决问题。
如果我可以运行一个快速测试来验证数据库仍然对应于 repo 中的创建脚本,这将极大地帮助我,即仍然是“官方”版本。
为此,我开始使用 pgTAP,到目前为止,效果很好。然而,每当对数据库进行受控的、批准的更改时,测试脚本也需要更改。
因此,我考虑自动创建测试脚本。一种通用方法可能是
我宁愿不必创建数据库,而是直接读取数据库创建脚本。我试图用谷歌搜索一种方法来利用 DDL 解析器并获得某种我可以使用的元数据表示,但到目前为止,我已经了解了很多关于 PostgreSQL 内部的知识,但无法真正找到解决问题的方法。
有人能想出一种方法来解析 PostgreSQL DDL 脚本吗?
最佳答案
这里有很多数据库元数据需要关注。几年来,我一直在研究相关的数据库内部结构,我不会认为您正在考虑构建的项目是可行的,而无需倾销几个月的编程时间只是为了获得一个粗略的 alpha 质量工具来处理一些您担心支持的特定更改子集。如果这很容易,那么将不会有一个长期存在(例如:人们已经想要它十年了)将 DDL Triggers 构建到数据库中的开放项目,这正是您希望在这里拥有的东西。
在实践中,人们使用两种流行的技术来使这类问题更容易处理:
实际上,采用其中任何一个并直接导出您想要的 pgTAP 脚本本身就是一个挑战。如果所做的更改足够小,您可能能够在某种程度上实现自动化。至少你会从一个合理大小的问题开始,从那个角度来解决。
关于database - 如何利用 PostgreSQL DDL 解析器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6834031/