需要工具从PostgreSQL 9,1中提取ER图


1

伙计我需要比较在PostgreSQL中运行的2个不同的数据库。我想使用一些工具以自动方式提取图表,我尝试过pgadmin3和pgdesigner,但它们似乎与我正在使用的postgre不兼容。我可以使用哪种工具来完成这项工作?

编辑1: 由于不兼容,我的意思是他们甚至无法打开我拥有的数据库,因为它们太新了。

编辑2:我可以打开两个转储,新旧版本,实际上我确实有.sql形式我觉得你提供的两个工具都可以解决问题。我将在工作中测试他们tommorow并在这里更新。非常感谢。


请求使用您已知的工具来描述您遇到的实际问题,而不是要求某些工具执行某些操作。它们究竟是“不兼容”的?你有什么尝试,你在哪里特别遇到问题?
slhck

@slhck对不起我gtg我会尽快更新
vfbsilva

如此多的失踪。 Pg版本有关吗?你有什么样的“数据库” - 转储? datadir副本?还是正在运行的DB? “似乎不兼容”如何 - “无法打开”数据库甚至意味着什么? 准确的错误消息,版本和分步说明将是必要的,以帮助您
Craig Ringer

你正在寻找的术语是逆向工程。将ERD转换为数据库是逆向工程。
Journeyman Geek

Answers:


1

如果你甚至无法“打开”数据库,那么你几乎无法比较它们。有些工具可以在转储上运行,但是它们需要转储符合预期的格式,最简单的方法是加载服务器并执行转储。

必须 首先能够为每个数据库启动数据库服务器。读取PostgreSQL数据库的唯一方法是通过PostgreSQL数据库服务器。

目前尚不清楚数据库的形式,您没有指定。

如果它们是转储,只需为转储安装足够新的PostgreSQL并将它们恢复到新安装。使用单独的机器或只是将旧Pg与旧Pg一起安装。你没有提到你的平台,操作系统/版本等,所以我无法进一步帮助你。

如果它们是PostgreSQL数据目录的副本,并且已从停止的服务器中正确获取,则必须获取 相同 上的版本(不是更新,不老) 相同的OS和架构 并从数据库启动服务器。因此,如果数据库来自(例如)32位Windows PostgreSQL 9.2,则需要在Windows上使用32位PostgreSQL 9.2来加载数据库,其他任何事情都不会。使用启动服务器 pg_ctl

一旦您可以连接到两台服务器,您就可以使用现有工具来比较两个DB。当我找到映射DB结构时 SchemaSpy 非常有用。为了比较考虑 apgdiff ;这将适用于转储,但要求转储格式正确。


似乎这些工具与我设法连接到两个数据库的最后一个postgresql不兼容。 Schemaspy返回某种错误:E = 0I = 0我仍然无法调试它。但是,它声称做我需要的。
vfbsilva

@vfbsilva嗯,如果你仍然卡住,请考虑在superuser.com上使用 详细报告 包含 确切的错误消息和版本
Craig Ringer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.