我们如何在数据仓库中使用并行加载摄取脚本来同时加载到多个表中而不重复



是否可以使用INSERT ALL将数据加载到多个表中,而不添加重复或不使用overwrite来完成?

由于WHEN子句不支持子查询,除非它返回一个值来与其他内容进行比较,所以我目前正在尝试以下内容:

INSERT ALL
INTO TEMP (PKEY, TITLE) VALUES ( ID, TITLE_NAME )
SELECT
$1 AS ID,
$2 AS TITLE_NAME
FROM @azure_stg/mti_test.csv (FILE_FORMAT=>'CSV')
WHERE $1 NOT IN (SELECT PKEY FROM TEMP)

我的目标是在同一个查询中添加另外3个要并行填充数据的表,而不添加重复。所以我尝试添加另一个into table2 select ...,但没有成功。

如果我答对了你的问题,你想在几个表中插入一条语句,不带任何条件。主要考虑的问题是:所有INSERT语句都使用相同的源数据还是不同的源数据?

如果所有语句都使用相同的源数据,则语法如下:

insert all
into t1
into t1 (c1, c2, c3) values (n2, n1, default)
into t2 (c1, c2, c3)
into t2 values (n3, n2, n1)
select n1, n2, n3 from src;

请参见此处:https://docs.snowflake.com/en/sql-reference/sql/insert-multi-table.html

如果这些语句基于不同的SELECT语句,则必须将它们拆分为单个INSERT语句。

最新更新