如何散列整个 Redshift 表?
Posted
技术标签:
【中文标题】如何散列整个 Redshift 表?【英文标题】:How to Hash an Entire Redshift Table? 【发布时间】:2019-05-03 00:11:29 【问题描述】:我想对整个 redshift 表进行哈希处理,以便在升级、备份和其他不应该影响表数据的修改后检查一致性。
我找到了Hashing Tables to Ensure Consistency in Postgres, Redshift and mysql,但该解决方案仍然需要拼出每个列的名称和类型,因此不能以通用方式应用新表。我必须手动更改列名和类型。
是否有其他函数或方法可以让我对整个表进行哈希/校验和以确认它们是相同的?理想情况下,无需详细说明该表的特定列和列类型。
【问题讨论】:
如果您可以选择另一个像 Snowflake 这样支持表 docs.snowflake.net/manuals/sql-reference/functions/hash.html 哈希的数据库,请将您的表卸载到 s3 并加载到雪花中并运行哈希。 【参考方案1】:Redshift 中当然没有内置功能来散列整个表。
另外,我会稍微注意那篇文章中建议的方法,因为据我所知,它正在计算列中所有值的哈希值,但没有将哈希值与行相关联标识符。因此,如果第 1 行和第 2 行交换列中的值,则哈希不会改变。所以,它不是严格计算一个足够的哈希值(但我可能错了!)。
您可以使用新的Stored Procedures in Redshift 进行调查,看看您是否可以创建适用于任何表的通用函数。
【讨论】:
以上是关于如何散列整个 Redshift 表?的主要内容,如果未能解决你的问题,请参考以下文章
如何将访问密钥和秘密密钥 shell 变量传递给 Redshift 复制命令
使用 Amazon Redshift 进行维度建模是不是可行