![需要工具从 PostgreSQL 9.1 中提取 ER 图](https://linux22.com/image/1375017/%E9%9C%80%E8%A6%81%E5%B7%A5%E5%85%B7%E4%BB%8E%20PostgreSQL%209.1%20%E4%B8%AD%E6%8F%90%E5%8F%96%20ER%20%E5%9B%BE.png)
伙计们,我需要比较在 PostgreSQL 中运行的两个不同数据库。我想使用一些工具以自动方式提取图表,我尝试过 pgadmin3 和 pgdesigner,但它们似乎与我正在使用的 postgre 不兼容。我可以使用哪种工具来完成此操作?
编辑 1:不兼容的意思是他们甚至无法打开我拥有的数据库,因为它们太新了。
编辑 2:我可以打开两个转储,旧版本和新版本,事实上我确实有 .sql 格式的转储,我认为您提供的两个工具都可以。我明天会在工作中测试它们并在这里更新。非常感谢。
答案1
如果您甚至无法“打开”数据库,那么您几乎无法比较它们。有些工具可以处理转储,但它们需要转储采用预期的格式,而最简单的方法是加载服务器并进行转储。
你必须首先能够为每个数据库启动一个数据库服务器。读取 PostgreSQL 数据库的唯一方法是通过 PostgreSQL 数据库服务器。
不清楚数据库的形式是什么,您没有具体说明。
如果它们是转储,只需为转储安装足够新的 PostgreSQL 并将它们恢复到新安装。使用单独的机器或只需将新 Pg 与旧 Pg 一起安装。您没有提到您的平台、操作系统/版本等,所以我无法进一步提供帮助。
如果它们是 PostgreSQL 数据目录本身的副本,并且是从已停止的服务器正确获取的,则必须获取相同的版本(不新,不旧)相同的操作系统和架构并从数据库启动服务器。因此,如果数据库来自(例如)32 位 Windows PostgreSQL 9.2,则需要 Windows 上的 32 位 PostgreSQL 9.2 来加载数据库,其他什么都行不通。使用 启动服务器pg_ctl
。
一旦可以连接到两个服务器,您就可以使用现有工具来比较两个数据库。在映射数据库结构时,我发现SchemaSpy非常有用。为了进行比较,请考虑差分函数;这将对转储起作用,但要求转储采用正确的格式。