我有一个DW表,我正在从临时表中插入数据。 DW表包含5列,我基本上检查从登台表中挑选时DW表中是否已存在所有5列的组合,如果它存在,那么我不进行插入(或更新)并跳过那一行(因为它已经存在)。
另一方面,如果存在没有5列组合的任何行,那么我进行插入。
有没有办法使用upsert实现此目的。因为我这里没有做任何更新操作(仅插入和删除(忽略插入))。我不确定upsert是否是正确的选择。
答案 0 :(得分:2)
Redshift中没有UPSERT
这样的内容,请参阅documentation。如果您打算只将行加载到一个尚未包含的表中,那么这应该可以解决问题:
insert into target_table
select
*
from
source_table
left join
target_table using(col1, col2, col3, col4, col5)
where
target_table.col1 is null
;