首页 > 解决方案 > 如何将文件中定义的模式与数据库上运行的实际模式进行比较?

问题描述

我正在运行一个 PostgreSQL 数据库,并希望将其中定义schema.sql的架构与定期在数据库上创建的架构进行比较。即验证没有应用远程手动更改或schema.sql实际反映数据库上运行的内容。

我目前在做的大致是:

$ pg_virtualenv sh -c 'psql -U $PGDATABASE -f schema.sql
$ pg_dump --schema-only --no-comments --no-owner --no-privileges --schema=public -U $PGDATABASE -f schema_local.sql' 
$ pg_dump --schema-only --no-comments --no-owner --no-privileges --schema=public -U $PGREMOTE -f schema_upstream.sql
$ diff -u <(grep -Ev '^--|^SET|^$$' schema_local.sql) <(grep -Ev '^--|^SET|^$$' schema_upstream.sql)

这工作得相当好,如果它们发生,我可以很容易地发现差异中的模式更改。但解决方案似乎有点老套,我想知道是否有更好的方法来实现同样的目标?

标签: postgresql

解决方案


推荐阅读