在Amazon Redshift中,如果行不存在,我怎样才能批量插入行?

时间:2016-04-28 14:43:15

标签: amazon-redshift

在Redshift中,我正在将值批量插入到表中。但是,我只想在此列表中插入表中尚不存在的值,以避免添加欺骗。

INSERT INTO $TEST_TABLE values (A, 1), (B, 2), (C, 3)

如果表已经包含(A,1),我希望语句只插入(B,2)和(C,3)。

谢谢!

1 个答案:

答案 0 :(得分:7)

没有自动方式只能插入不存在的行(通常称为UPSERT =更新现有行,插入新行)。

你可以将数据加载到临时表,然后执行这样的命令,只插入那些不存在的行:

INSERT INTO target
SELECT * FROM temp
WHERE temp.primary_key NOT IN (SELECT DISTINCT primary_key FROM target)

如果需要,也可以使用类似的方法更新已存在的值。