【问题标题】: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 语句会评估什么?为什么要动态创建舞台而不是使用表格舞台?

标签: snowflake-cloud-data-platform


【解决方案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"""

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    相关资源
    最近更新 更多