Snowflake - 创建名称中带有日期变量的表

Posted

技术标签:

【中文标题】Snowflake - 创建名称中带有日期变量的表【英文标题】:Snowflake - CREATE table with a date variable in its name 【发布时间】:2020-08-12 18:27:03 【问题描述】:

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

原始表 = "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'.

【问题讨论】:

【参考方案1】:

我建议使用 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

我希望这会有所帮助...丰富

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

【讨论】:

? 完美。惊人的。谢谢!

以上是关于Snowflake - 创建名称中带有日期变量的表的主要内容,如果未能解决你的问题,请参考以下文章

批处理文件命令输出到名称中带有日期和时间的文件中[重复]

Laravel:使用名称中的变量创建表

在 mySQL 中创建名称中带有空格的表

php sql中带有日期、变量类别和总和值的数据透视表

Snowflake SQL:需要将日期脊柱添加到现有表列

SQL 游标 FOR 循环,模式名称中带有 / 变量