在 Amazon Redshift 中,我如何才能批量插入尚不存在的行?

In Amazon Redshift, how can I bulk insert rows only if they don't already exist?

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

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

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

谢谢!

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

您可以将数据加载到临时 table,然后执行这样的命令以仅插入不存在的行:

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

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