Snowflake-名称为日期变量的CREATE表

问题描述

我想在雪花中创建一个表,并将日期附加到其名称的末尾。最好的方法是什么?

  • 原始表=“ DB”。“ SCHEMA”。“ CLONEME”
  • 所需的新表=“ DB”。“ SCHEMA”。“ CLONEME_20200812BKP”

试图设置日期变量,但是没有用。

第一次尝试:

set var1= (SELECT TO_CHAR(DATE_Trunc('DAY',CONVERT_TIMEZONE('UTC',CURRENT_DATE())),'YYYYMMDD'));
set var2 = concat('DB.SCHEMA.CLONEME_',$var1);
create table $var2 clone DB.SCHEMA.CLONEME;
-- and got the following error:
-- sql compilation error: Syntax error line 1 at position 13 unexpected '$var2'.

解决方法

我建议使用IDENTIFIER函数:

https://docs.snowflake.com/en/sql-reference/identifier-literal.html

示例:

CREATE OR REPLACE  TABLE CLONEME(
    src_string VARCHAR(20));

INSERT INTO CLONEME 
VALUES('JKNHJYGHTFGRTYGHJ'),('ABC123'),(null),('0123456789');

set var1= (SELECT TO_CHAR(DATE_TRUNC('DAY',CONVERT_TIMEZONE('UTC',CURRENT_DATE())),'YYYYMMDD'));
set var2 = concat('CLONEME_',$var1);

SELECT getvariable('VAR1'),getvariable('VAR2');
--20200812  CLONEME_20200812

create table identifier($var2) clone CLONEME;
--Table CLONEME_20200812 successfully created

我希望这可以帮助...丰富

p.s。如果这个(或另一个)答案对您有帮助,请花一点时间“接受”对您有帮助的答案 通过单击答案旁边的复选标记,将其从“灰色”切换为“填充”。