如何解决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 举报,一经查实,本站将立刻删除。