AWS DataPipeline:RedshiftCopyActivity OVERWRITE_EXISTING未强制执行主键

时间:2016-06-20 08:51:12

标签: amazon-web-services amazon-redshift amazon-data-pipeline

我有一个DataPipeline,可以通过S3将数据从本地数据库导出到Redshift(非常类似于Incremental copy of RDS MySQL table to Redshift模板)。我已经定义了主键并在管道定义中将insertMode设置为“OVERWRITE_EXISTING”,但是,我注意到有些行最终是重复的。在什么情况下会发生这种情况?如何防止它?

2 个答案:

答案 0 :(得分:0)

在Redshift中,它不会强制主键来限制重复值。 我们使用临时表来加载增量数据然后我们通过检查记录是否存在来将(使用合并)upsert到目标表。

通过这种方式,你可以实现。

谢谢!

答案 1 :(得分:0)

几年后才发现这篇文章,添加一个答案,以防对其他人有帮助:

除了主键之外,Redshift 还使用 distkeys 来确定要覆盖哪些行。因此,在我的情况下,distkey 列中的更新值迫使 Redshift 创建重复的行,尽管主键保持不变。

相关问题