使用绑定变量在雪花中加载数据

Posted

技术标签:

【中文标题】使用绑定变量在雪花中加载数据【英文标题】:Loading data in Snowflake using bind variables 【发布时间】:2021-02-25 18:14:35 【问题描述】:

我们正在使用 Python 接口为 Snowflake 构建动态数据加载语句。

我们希望在查询运行时创建一个阶段,并在后续语句中使用该阶段。表名和阶段名是动态的,使用绑定变量。

然而,当我们在https://docs.snowflake.com/en/user-guide/python-connector-api.html 上尝试了所有方法时,似乎找不到正确的语法

COPY INTO IDENTIFIER(%(table_name)s)(SRC, LOAD_TIME, ROW_HASH) FROM (SELECT t.$1, CURRENT_TIMESTAMP(0), MD5(t.$1) FROM "'%(stage_name)s'" t) 清除 = 真;

这甚至可能吗?它适用于任何人吗?

【问题讨论】:

您看到了什么错误?在 python 进行替换后,您的 SQL 语句会评估什么?为什么要动态创建舞台而不是使用表格舞台? 【参考方案1】:

您的代码没有像您提到的那样创建阶段,您不需要创建阶段,而是使用表阶段或用户阶段。下面的 SQL 使用 table stage。

你还需要稍微改变你的语法并使用更多的pythonic方式:f-strings

sql = f"""COPY INTO table_name (SRC, LOAD_TIME, ROW_HASH) 
FROM (SELECT t.$1, CURRENT_TIMESTAMP(0), MD5(t.$1) FROM @%table_name t)
PURGE = TRUE"""

【讨论】:

以上是关于使用绑定变量在雪花中加载数据的主要内容,如果未能解决你的问题,请参考以下文章

雪花存储过程变量绑定错误

在 ngOnInit() 中使用数据绑定从本地 JSON 文件读取数据会导致未定义的变量

绑定变量选项

使用 RxSwift/RxCocoa 制作的 TableView 在绑定到的变量中的数据更改后出现故障

在 Oracle 中正确使用带日期的绑定变量?

Kendo UI网格数据变量Vue.js