使用绑定变量在雪花中加载数据
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 文件读取数据会导致未定义的变量