是否可以使用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语句。