sql - Amazon Redshift key 未强制执行 - 如何防止重复数据?

标签 sql amazon-web-services amazon-redshift

刚刚测试AWS Redshift,并在插入中发现了一些重复数据,我希望这些数据在键列中的复制时会失败,阅读文档后发现主键约束是“t“强制”。

任何人都知道如何防止主键重复(按照“传统”期望)。

感谢所有 Redshift 先驱者!

最佳答案

我在创建记录时分配 UUID。如果记录本质上是唯一的,我会使用类型 4 UUID(随机),如果不是,我会使用类型 5(SHA-1 哈希)并使用自然键作为输入。
那么您可以关注this instruction通过 AWS 非常轻松地执行 UPSERT。如果您的输入有重复项,您应该能够通过在临时表中发出如下所示的 SQL 来进行清理:

CREATE TABLE cleaned AS
SELECT
  pk_field,
  field_1,
  field_2,
  ...  
FROM (
       SELECT
         ROW_NUMBER() OVER (PARTITION BY pk_field order by pk_field) AS r,
       t.*
       from table1 t
     ) x
where x.r = 1

关于sql - Amazon Redshift key 未强制执行 - 如何防止重复数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15170701/

相关文章:

amazon-redshift - 昨天 - 在 Redshift 和 PostgreSQL 中 - 日期添加兼容性

amazon-web-services - 如何将存储桶所有者完全控制权授予从一个帐户中的 redshift 卸载到另一个帐户中的 s3 存储桶的文件?

mysql - 在 SQL 中,什么是更快的 : LIMIT . .. OFFSET 或范围查询?

sql - 是否可以分析 SQLite SQL 查询?

amazon-web-services - aws cloudformation - 在我的 vpc 中启动 ec2 实例

amazon-web-services - Elastic beanstalk 自动创建一个安全组,允许端口 80 上的所有流量。如何禁用它?

sql - 如何取得三连胜

sql - MS Access 运行 SQL 更新错误 3464

r - 使用 AWS 与 R 进行并行处理

amazon-redshift - Redshift 无法将 json 字段中的文本转换为 bool 值