查询内部阶段 Snowflake
Posted
技术标签:
【中文标题】查询内部阶段 Snowflake【英文标题】:Query internal stage Snowflake 【发布时间】:2021-06-28 15:03:32 【问题描述】:按照文档中的步骤,我在 Snowflake 中创建了一个阶段和文件格式,然后使用 PUT 暂存了一个 csv 文件
USE IA;
CREATE OR REPLACE STAGE csv_format_2;
CREATE OR REPLACE FILE FORMAT csvcol26 type='csv' field_delimiter='|';
PUT file://H:\\CSV_SWF_file_format_stage.csv @IA.public.csv_format_2
当我尝试查询暂存对象时
SELECT a.$1 FROM @csv_format_2 (FORMAT=>'csvcol26', PATTERN=>'CSV_SWF_file_format_stage.csv.gz') a
我得到: SQL 错误 [2] [0A000]: 不支持的功能“表”。
关于这个错误的任何想法?
【问题讨论】:
【参考方案1】:第一个参数应该是FILE_FORMAT
而不是FORMAT
:
SELECT a.$1
FROM @csv_format_2 (FILE_FORMAT=>'csvcol26',PATTERN=>'CSV_SWF_file_format_stage.csv.gz') a;
相关:Querying Data in Staged Files
使用具有以下语法的 SELECT 语句查询暂存数据文件:
SELECT [<alias>.]$<file_col_num>[.<element>] [ , [<alias>.]$<file_col_num>[.<element>] , ... ] FROM <internal_location> | <external_location> [ ( FILE_FORMAT => '<namespace>.<named_file_format>', PATTERN => '<regex_pattern>' ) ] [ <alias> ]
【讨论】:
抛出 TABLE 消息的原因是文件格式参数在 SELECT 上的 TABLE OPERATOR 内。由于参数名称未被识别为合法运算符,因此您会得到这个可能令人困惑的响应。以上是关于查询内部阶段 Snowflake的主要内容,如果未能解决你的问题,请参考以下文章
数据推送到 Snowflake 阶段时触发 Snowflake 任务
使用 Airflow PUT 命令将 S3 文件移动到 Snowflake 阶段
通过 JDBC 与 COPY_INTO + GET 批量卸载雪花数据
无法使用 Talend 上传到 Snowflake 阶段,NoSuchMethodError