Snowflake - 如何引用名称中包含特殊字符的指定 table 的内部阶段?
Snowflake - how to refer to internal stage for specified table with special characters in its name?
Snowflake 允许 table 名称包含特殊字符,只要 table 名称用双引号括起来即可。
但是,我在引用此类 table 的内部阶段时遇到了麻烦。在提到这些阶段时,双引号似乎不起作用。
示例:
CREATE TABLE "cars (sedan)" (myint int)
尝试为此 table 引用内部阶段将失败(这是在雪花的在线控制台上完成的):
LIST @%"cars (sedan)"
或
PUT file:///tmp/myfile.csv @%"cars (sedan)"
错误消息(对于 LIST):
SQL compilation error: syntax error line 1 at position 13 unexpected '('.
如果 table 名称不错(如 "cars"),则查询将成功。
提及这些阶段的正确方法是什么?
根据文档,从 table 阶段的文件复制数据时,可以省略 FROM 子句,因为 Snowflake 会自动检查 table 阶段的文件。
你能省略 FROM 吗,因为名称会引发错误?
尝试用单引号括起来:
list '@%"cars (sedan)"'
或者,您也可以使用 $$ 来包围标识符和 @%,如下所示:
ls $$@%"cars (sedan)"$$;
Snowflake 允许 table 名称包含特殊字符,只要 table 名称用双引号括起来即可。
但是,我在引用此类 table 的内部阶段时遇到了麻烦。在提到这些阶段时,双引号似乎不起作用。
示例:
CREATE TABLE "cars (sedan)" (myint int)
尝试为此 table 引用内部阶段将失败(这是在雪花的在线控制台上完成的):
LIST @%"cars (sedan)"
或
PUT file:///tmp/myfile.csv @%"cars (sedan)"
错误消息(对于 LIST):
SQL compilation error: syntax error line 1 at position 13 unexpected '('.
如果 table 名称不错(如 "cars"),则查询将成功。
提及这些阶段的正确方法是什么?
根据文档,从 table 阶段的文件复制数据时,可以省略 FROM 子句,因为 Snowflake 会自动检查 table 阶段的文件。
你能省略 FROM 吗,因为名称会引发错误?
尝试用单引号括起来:
list '@%"cars (sedan)"'
或者,您也可以使用 $$ 来包围标识符和 @%,如下所示:
ls $$@%"cars (sedan)"$$;