如何在 postgres 中散列整个 table?
How to hash an entire table in postgres?
我想获取整个 table 中数据的哈希值。我需要在迁移后比较两个数据库以验证数据迁移是否成功。是否可以可靠且可重复地为数据库中的整个 table 生成哈希?
您可以从命令行执行此操作(当然替换 my_database
和 my_table
):
psql my_database -c 'copy my_table to stdout' |sha1sum
如果要使用查询来限制列数、添加排序等,修改查询即可:
psql my_database -c 'copy (select * from my_table order by my_id_column) to stdout' |sha1sum
请注意,除了列 data 之外,这不会散列任何内容。没有架构信息、约束、索引、元数据、权限等
另请注意,sha1sum
是一个任意散列程序;您可以将其通过管道传递给任何生成哈希的程序。一些 cuspy 选项是 sha256sum
和 md5sum
。
我想获取整个 table 中数据的哈希值。我需要在迁移后比较两个数据库以验证数据迁移是否成功。是否可以可靠且可重复地为数据库中的整个 table 生成哈希?
您可以从命令行执行此操作(当然替换 my_database
和 my_table
):
psql my_database -c 'copy my_table to stdout' |sha1sum
如果要使用查询来限制列数、添加排序等,修改查询即可:
psql my_database -c 'copy (select * from my_table order by my_id_column) to stdout' |sha1sum
请注意,除了列 data 之外,这不会散列任何内容。没有架构信息、约束、索引、元数据、权限等
另请注意,sha1sum
是一个任意散列程序;您可以将其通过管道传递给任何生成哈希的程序。一些 cuspy 选项是 sha256sum
和 md5sum
。