在暂存文件#snowflake-cloud-platform 上选择中的列绑定变量

Posted

技术标签:

【中文标题】在暂存文件#snowflake-cloud-platform 上选择中的列绑定变量【英文标题】:Column bind variable in Select on Staged File #snowflake-cloud-platform 【发布时间】:2020-06-12 23:11:17 【问题描述】:

为了暂存和查询文件,文档显示了这个示例查询: SELECT t.$1, t.$2 FROM @mystage1 (file_format => myformat) t;

为了简化字符串操作,我想将 Snowflake 配置为使用除美元符号之外的任何内容作为列引用。例如,用 c 代替 $ 怎么样?

SELECT t.c1, t.c2 FROM @mystage1 (file_format => myformat) t;

这是文档的链接: https://docs.snowflake.com/en/user-guide/querying-stage.html

目前,我被应用程序强制使用 PowerShell 对要由 SnowSql CLI 处理的查询进行编码)。让 PowerShell 发出这个字符串是微不足道的,但随后 SnowSql 添加了它的 2 美分,History 显示该语句被处理为 SELECT t., t。 FROM @mystage1 (file_format => myformat) t;

【问题讨论】:

【参考方案1】:

PowerShell follows a quoting rule 类似于Bash,其中$VARIABLE 在双引号字符串中总是被解析,而在单引号字符串中永远不会被解析。

syntax for stage querying 需要使用 $ 符号,该符号不能替换为其他字符串。

如果您无法使用文件将查询传递给 SnowSQL(通过其 -f [FILE] option)作为绕过 shell 解析的一种方式,并且必须使用 -q [TEXT] option,请考虑转义 $ 符号,通过使用无法解析的引号(单引号字符:')或使用 PowerShell 转义字符(反引号字符:`):

snowsql -q 'SELECT t.$1, t.$2 FROM @mystage1 (file_format => myformat) t;'
snowsql -q "SELECT t.`$1, t.`$2 FROM @mystage1 (file_format => myformat) t;"

【讨论】:

谢谢。此查询:“SELECT t.$1, t.$2 FROM @mystage1 (file_format => myformat) t;”在 ODBC 之外工作。 我的狗追着猫,无法完成我的编辑。此查询:“SELECT t.$1, t.$2 FROM @mystage1 (file_format => myformat) t;”是尝试的第一件事,当通过 -q 提交时转义不起作用。我将尝试我希望工作的 -f 选项。提交此问题后不久,我想到这也可以解决问题: SELECT t."$1", t."$2" FROM @mystage1 (file_format => myformat) t;顺便说一句,还有其他方法可以传递 file_format,在此示例中,格式文件用作表运算符,因此需要添加 gt 符号。 =>

以上是关于在暂存文件#snowflake-cloud-platform 上选择中的列绑定变量的主要内容,如果未能解决你的问题,请参考以下文章

“SyntaxError:Unexpected token ”当'yarn run build:production'在暂存时[重复]

如何在暂存站点中测试 WooCommerce

从 Rails 应用程序发送电子邮件时的 Net::SMTPAuthenticationError(在暂存环境中)

如何在暂存环境中使用 git flow?

git stash暂存文件

git常用命令总结