问题描述
我在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 (将#修改为@)