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

标签 postgresql hash checksum

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

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

目前我正在使用(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 或更多)并在服务器端生成校验和。

Google 没有帮助。

有什么建议吗?

谢谢。

最佳答案

你可以使用 md5:

 log_table="
SELECT 
  md5(column1 || column2 || column3) AS hash,
  column1, column2, column3
FROM log_table where to_char(timestamp, '$ts_format') = '$tx_moment'";

关于postgresql - 如何在 Postgres 中生成结果集的哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3533314/

相关文章:

性能类型 varchar(1) 或 smallint 来存储状态 Postgres

sql - 计算 postgres 查询中的值实例

java - 如何组成String keys以获得最均匀的hash code分布

database - 提高定位行(整数列)的速度

file - 一个合适的哈希函数来检测数据损坏/检查数据完整性?

java - 如何使用 Java 在 Windows 中比较 Fedora iso 下载文件与其 sha-256 校验和文本文件?

sql - Postgres 中的多表 count()

ruby - 创建散列,键是表名,值是列名

c# - 使用 DigestMethod 的 sha256 算法修改 C# list

svn - 更新时无法解决 Subversion 1.7 校验和不匹配错误