Oracle 11g和PostgreSQL 9.2.4中查询结果集的md5哈希

问题描述

我在Oracle 11g数据库和Postgresql 9.2.4数据库中具有相同的TPCH 100 GB数据。我想在某些查询的结果集上使用md5哈希检查这两个数据库实例之间的数据一致性。 例如。在Oracle中,我有以下内容

sql> select dbms_sqlhash.gethash('select P_PARTKEY from tpch.part order by P_PARTKEY',2) from dual;

DBMS_sqlHASH.GETHASH('SELECTP_PARTKEYFROMTPCH.PART',2)
--------------------------------------------------------------------------------
FCD3107B07440D1A7161753CCB01AEA8

Elapsed: 00:04:53.43

在Postgres中,从相同结果集中获取相同哈希的查询是什么? 我尝试了以下操作,获得了一个不同的哈希值:

postgres=# select md5(string_agg(part.P_PARTKEY::text,'' order by part.P_PARTKEY)) from tpch.part;
               md5
----------------------------------
 9aef6c00d25f68510780ac37c775aedd
(1 row)

Time: 71537.872 ms
postgres=# select md5(array(select P_PARTKEY from tpch.part order by P_PARTKEY)::text);
               md5
----------------------------------
 366acef03d0c8e5488839da04d5e4515
(1 row)

Time: 58363.788 ms

我不知道dbms_sqlhash.gethash函数的内部信息,因此不确定string_agg或数组函数是否在Postgres中以与在Oracle中相同的方式组合行哈希。请帮忙。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)