如何在 Postgres 中生成结果集的哈希值?

2023-12-24

我有两个用于记录内容的数据库,我想检查它们是否同步。

批准的解决方案是定期(假设每小时)向两者发送选择,生成结果集的哈希值并比较它们。如果它们匹配则很好,否则会生成一些警报。

目前我正在通过(bash 脚本)执行此操作:

 log_table="SELECT column1, column2, column3 FROM log_table where to_char(timestamp, '$ts_format') = '$tx_moment'";
PSQL="psql -t -q -h $_gp_host -U $_gp_user -d log_schema -c ";
echo "`${PSQL} $tx_fix${log_table} | sort | cksum`";

我想在 postgres 端进行 cksum/hash 操作。因为目前它会下载整个结果集(甚至可以有 25MB 或更多)并在服务器端生成校验和。

谷歌没有帮助。

有什么建议么?

Thanks.


您可以使用 md5:

 log_table="
SELECT 
  md5(column1 || column2 || column3) AS hash,
  column1, column2, column3
FROM log_table where to_char(timestamp, '$ts_format') = '$tx_moment'";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Postgres 中生成结果集的哈希值? 的相关文章

随机推荐