【发布时间】:2020-02-26 20:45:56
【问题描述】:
我正在尝试使用连接键字段将数据从第二个表 (src_tbl) 插入到一个表 (trgt_tbl) 中。查询似乎工作正常,但速度极慢。 trgt_tbl 中有大约 1600 万条记录,来自 src_tbl 的每日增量负载预计将有大约 50 万条记录。我正在尝试弄清楚我是否可以以更好的方式做到这一点。
注意:合并不是一个选项,因为数据是插入到 Redshift 中的,而 Redshift 不支持合并。
INSERT INTO trgt_tbl (col1,
col2,
col3,
col4,
col5,
col6)
SELECT col1,
col2,
col3,
col4,
col5,
col6
FROM src_tbl s
WHERE NOT EXISTS (
SELECT 1
FROM trgt_tbl t
WHERE
t.col1 = s.col1
OR t.col2 = s.col2
OR t.col3 = s.col3
OR t.col4 = s.col4
)
【问题讨论】:
-
你的实际目标是什么?您是否想做相当于
UPSERT的操作?您查看过Updating and Inserting New Data - Amazon Redshift 中的示例吗? -
是的,这是一个 upsert。
-
但我正在尝试使用多个键来处理 upsert,这是一个挑战。
-
我尝试过这种方式,但收到错误消息:无效操作:关系“trgt_tbl”不存在;
标签: sql amazon-web-services amazon-redshift etl