我搜索了 PostgreSQL 和 Google 的文档,但没有找到该函数pg_get_tabledef
, whilepg_get_indexdef
存在。
没有吗pg_get_tabledef
?也许实施起来太困难了?但是 pgAdmin4 可以为数据库中的每个对象提供非常漂亮/清晰/干净的 DDL 脚本。效果如何?
事实上,我需要比较两个数据库的许多表的定义(How to rapid Compare of multiple tables of两个 PostgreSQL 数据库的定义?)。
尽管有pg_dump --section=pre-data
并且pg_dump --section=post-data
可以转储所有定义,但比较结果仍然是一项艰巨的工作。我需要准确找出哪些表结构已更改。
所以我期待pg_get_tabledef
,比如pg_get_indexdef
,但是对于桌子。奇怪的是,虽然存在,但没有这样的功能pg_get_indexdef
。
请给我一些提示吗?谢谢!
答案是它不存在,因为没有人实现它。
人们对这样的功能表现出了兴趣,请参阅pgsql-hackers list 上的线程。
第一个困难是指定结果应包括什么......
现在有一篇很好的文章,是我写的:
https://github.com/MichaelDBA/pg_get_tabledef
我无法回答您关于 pg_get_tabledef 函数是否存在的问题,但是......
您是否考虑过使用 DDLx 扩展(https://pgxn.org/dist/ddlx/)?
在 Linux 上,我使用以下内容来比较 Pg 数据库的开发、测试和生产实例(编辑2023-07-13 更新脚本):