0

我将如何验证 8.3 postgresql 数据库中的数据与 9.0 数据库中的数据相同

当我在示例表上执行 sql 转储时,我们发现了许多差异,但这是由于 9.0 在日期字段的末尾和开头截断 0,转储的顺序也不是固定的,即使这可以用排序(没有双关语)。它不允许验证,因为它会丢失它所属的表,因为已排序的 sql 转储将是一堆毫无意义的 sql 命令,其中包含额外的转储设置。

count(*) 也不够。

我想 100% 确定一个中的数据与另一个中的数据相同,尽管存在版本差异以及至少在 9.0 中保存日期的方式。

我应该补充一下,我有数百个表和数百 GB 的数据。所以我需要一个像 diff DUMPa.sql DUMP2.sql 这样的自动化过程,数据的 SHA(不是格式)是个好主意,但是由于众所周知的原因,不能区分 PostgreSQL 的二进制转储。我知道 mysql 具有校验和功能,但我使用的是 postgresql。

4

1 回答 1

0

首先是坏消息。如果不将所有数据加载到中间程序并直接进行比较,就无法提供您想要解决的全部问题。这将需要时间,并且会拖累您的系统负载,因此我的建议是设置某种复制并比较副本。

您可能能够做的一件事是使用 Slony 或 Bucardo 之类的东西进行复制,然后触发将数据移动到辅助子分区并将它们复制到合并服务器上进行比较。然后您可以在 PostgreSQL 中进行比较。这将减少负载,这意味着与其他方法相比,您的报告数据将相对容易管理。但是所有数据都必须逐行加载和比较。

于 2013-04-09T02:53:41.560 回答