在postgresql中查找行的哈希值

Aru*_*hny 21 sql postgresql hashcode

有没有办法在postgresql中获取行的哈希码?

我需要导出一些数据,只有在最后一次导出后数据有一些变化,最后导出的数据行可以存储在一个表中,当我再次需要导出数据时我可以得到所有的哈希值数据并仅导出具有与上次导出不同的哈希值的行.

是否可以使用postgresql实现?

谢谢

Fra*_*ens 39

将行转换为文本并使用md5创建哈希:

SELECT
    md5(CAST((f.*)AS text))
FROM
    foo f;
Run Code Online (Sandbox Code Playgroud)

  • @johnmich @datico 小心!这样不同的列可以产生相同的字符串,例如`'' || '' || 'a' = 'a' || '' || ''`。最好使用 md5(row(col_1,col_2,col_2)::text)`。 (11认同)
  • 或者,更短的`SELECT md5(f :: text)FROM f` (6认同)

mat*_*t b 6

另一种方法是设置一个ON INSERT OR UPDATE触发器,将当前时间戳插入到last_modified列中,然后在导入过程运行时根据该列进行简单查询。

  • 通过这种方法,数据库触发器将确定并写入“last_modified”时间,而不是客户端将数据放入此表中。客户不会也不应该知道此列 - 您的数据库将自行管理它。 (3认同)