无法获得选择查询的输出

Posted

技术标签:

【中文标题】无法获得选择查询的输出【英文标题】:Not able to get output of select query 【发布时间】:2020-05-31 17:39:06 【问题描述】:

我正在对我的雪花试用实例执行一个简单的选择查询。 从 schema_migrations 中选择 *;

我收到以下错误: SQL 编译错误:对象“SCHEMA_MIGRATIONS”不存在或未授权。

已在查询框的右上角选择了正确的角色、数据库和架构。 附加screenshot。

相同的选择查询适用于同一数据库、架构中的不同表。

请注意,此表 (schema_migrations) 是通过 golang 代码使用 golang 的雪花库创建的。

【问题讨论】:

【参考方案1】:

Snowflake 的对象标识符区分大小写。您的表created from Go 是使用double-quoted table name identifier 创建的,因此在您的屏幕截图中显示为小写。

因此,要查询它,您必须明确指定一个小写名称:

SELECT * FROM UTIL_DB.PUBLIC."schema_migrations";

未加引号的标识符名称是双引号的 treated as upper-case 和 will not match 标识符。引用相关文档部分:

当一个标识符不带引号时,它以大写形式存储和解析。

当一个标识符被双引号括起来时,它会按照输入的内容进行存储和解析,包括大小写。

还有,

如果使用双引号标识符创建对象,则在查询或任何其他 SQL 语句中引用时,标识符必须与创建时完全相同,包括双引号。

未能包含引号可能导致对象不存在错误(或类似类型的错误)。

【讨论】:

以上是关于无法获得选择查询的输出的主要内容,如果未能解决你的问题,请参考以下文章

oracle中的变量和多个选择语句

如何将从“选择”查询中获得的值存储到 ASP.net 中的会话变量中

如何访问选择查询的行和列[关闭]

无法查询/选择通过 Spark SQL 插入的数据

无法查询/选择通过Spark SQL插入的数据

Cassandra选择查询多个参数