在红移中插入

Fir*_*ame 3 upsert data-warehouse amazon-web-services amazon-redshift

我有一个 DW 表,我正在其中插入一个临时表中的数据。DW 表包含 5 列,我基本上是在从临时表中选择时检查 DW 表中是否已经存在所有 5 列的组合,如果存在,则我不进行插入(或更新)并跳过该行(因为它已经存在)。

另一方面,如果存在没有 5 列组合的任何行,那么我进行插入。

有没有办法使用 upsert 来实现这一点。因为我在这里没有做任何更新操作(仅插入和删除(即忽略插入))。我不确定 upsert 是否是正确的选择。

moe*_*tel 6

UPSERTRedshift 中没有这样的东西,请参阅他们的文档。如果您打算仅将行加载到尚未包含的表中,那么这应该可以解决问题:

insert into target_table
    select
        *
    from
        source_table
    left join
        target_table using(col1, col2, col3, col4, col5)
    where
        target_table.col1 is null
;
Run Code Online (Sandbox Code Playgroud)