有条件地插入 Snowflake 中的 table
Conditional insert into table in Snowflake
假设我有 2 个表 TABLE_A 和 TABLE_B。当 TABLE_B 中没有行时,我想在 TABLE_A 中插入一个虚拟行,如果 TABLE_B 中有任何行,我想将存在的任何内容插入 TABLE_A 中。我们该怎么做?
CREATE TABLE TABLE_A(
id STRING NOT NULL
, uid STRING NOT NULL
, date STRING NOT NULL
, timestamp TIMESTAMP NOT NULL
, payload OBJECT NOT NULL
, arr ARRAY NOT NULL
)
;
CREATE TABLE TABLE_B(
id STRING NOT NULL
, uid STRING NOT NULL
, date STRING NOT NULL
, timestamp TIMESTAMP NOT NULL
, payload OBJECT NOT NULL
, arr ARRAY NOT NULL
)
;
当 TABLE_B 中的 COUNT(*) = 0 则
插入'dummy_id','dummy_uid',current_date(),current_timestamp(),TO_OBJECT(PARSE_JSON('{}')),TO_ARRAY('DUMMY_ROWS')
进入 TABLE_A。
你可以使用SQL的CASE函数,你可以这样写
INSERT into table_A(),
CASE
WHEN (select count(*) from table_b ) > 0
THEN select * from table_b
ELSE "some dummy data"
END
FROM table_b;
这不是复制粘贴答案,但您可以从中找到您的路径
怎么样
INSERT INTO TABLE_A
SELECT * FROM TABLE_B
UNION ALL
SELECT
'dummy_id','dummy_uid', current_date(), current_timestamp(),
TO_OBJECT(PARSE_JSON('{}')), TO_ARRAY('DUMMY_ROWS')
WHERE (SELECT COUNT(*) FROM TABLE_B) = 0
只有 UNION ALL 的一部分会包含一些东西。
顺便说一句,这个解决方案通常适用于任何 DBMS,而不仅仅是 Snowflake。
假设我有 2 个表 TABLE_A 和 TABLE_B。当 TABLE_B 中没有行时,我想在 TABLE_A 中插入一个虚拟行,如果 TABLE_B 中有任何行,我想将存在的任何内容插入 TABLE_A 中。我们该怎么做?
CREATE TABLE TABLE_A(
id STRING NOT NULL
, uid STRING NOT NULL
, date STRING NOT NULL
, timestamp TIMESTAMP NOT NULL
, payload OBJECT NOT NULL
, arr ARRAY NOT NULL
)
;
CREATE TABLE TABLE_B(
id STRING NOT NULL
, uid STRING NOT NULL
, date STRING NOT NULL
, timestamp TIMESTAMP NOT NULL
, payload OBJECT NOT NULL
, arr ARRAY NOT NULL
)
;
当 TABLE_B 中的 COUNT(*) = 0 则 插入'dummy_id','dummy_uid',current_date(),current_timestamp(),TO_OBJECT(PARSE_JSON('{}')),TO_ARRAY('DUMMY_ROWS') 进入 TABLE_A。
你可以使用SQL的CASE函数,你可以这样写
INSERT into table_A(),
CASE
WHEN (select count(*) from table_b ) > 0
THEN select * from table_b
ELSE "some dummy data"
END
FROM table_b;
这不是复制粘贴答案,但您可以从中找到您的路径
怎么样
INSERT INTO TABLE_A
SELECT * FROM TABLE_B
UNION ALL
SELECT
'dummy_id','dummy_uid', current_date(), current_timestamp(),
TO_OBJECT(PARSE_JSON('{}')), TO_ARRAY('DUMMY_ROWS')
WHERE (SELECT COUNT(*) FROM TABLE_B) = 0
只有 UNION ALL 的一部分会包含一些东西。
顺便说一句,这个解决方案通常适用于任何 DBMS,而不仅仅是 Snowflake。