根据Redshift中的键列更新或插入

时间:2014-08-20 16:11:11

标签: insert-update duplicate-data amazon-redshift

我每天都会将CSV文件加载到Redshift。要处理重复项,我将文件加载到登台表,然后使用基于键列的Update或Insert脚本加载到目标表。最近我意外地在目标表中发现了重复数据。

我仔细检查了我的脚本,没有看到任何重复的原因。以下是我正在使用的更新和插入脚本格式。

用于插入:

      Insert into target (key1, key2, col3, col4)
      Select key1, key2, col3, col4 
      From stage s where not exists (select 1 from target t
                        where s.key1 = t.key1 and)
                        s.key2 = t.key2);

更新:

      Update target Set
          key1=s.key1, key2=s.key2, col3=s.col3, col4=s.col4
      From stage s where target.key1=s.key1 and target.key2=s.key2;

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我也碰到了这个。问题出在插入...选择...其中选择本身产生了重复。我们的一个解决方案是使用游标(在Redshift之外)来运行select并一次插入一条记录,但事实证明这有性能问题。相反,我们现在使用初始选择

检查重复项
select key1,key2 from stage group by key1,key2 having count(*) > 1;

并在返回记录时停止该过程。