在 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)
如果需要,也可以使用类似的方法更新已存在的值。
在 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)
如果需要,也可以使用类似的方法更新已存在的值。