Snowflake查询关联S3的Stage时,如何忽略非JSON格式文件?
解决Snowflake查询Stage时忽略非JSON文件的问题
有三种常用方法可以避免HTML文件导致的JSON解析错误,实现查询时仅读取JSON文件:
1. 查询时临时指定文件匹配规则
在查询语句中通过pattern参数添加正则表达式,仅匹配后缀为.json的文件:
SELECT s.$1 FROM @RAW.DEV.STAGE_LOCAL (file_format => 'JSON', pattern => '.*\\.json') AS s
这里的.*\\.json是正则表达式,用于匹配任意字符结尾为.json的文件,Snowflake中需用双反斜杠转义点号。
2. 创建Stage时预设过滤规则
如果该Stage长期仅需读取JSON文件,可在创建Stage时直接指定pattern参数,后续查询无需重复设置:
CREATE OR REPLACE STAGE RAW.DEV.STAGE_LOCAL URL = 's3://your-bucket-path' FILE_FORMAT = (FORMAT_NAME = 'JSON') PATTERN = '.*\\.json';
之后执行原查询语句即可自动忽略非JSON文件。
3. 路径+文件名双重过滤
若存储桶内文件有固定路径结构(比如JSON文件都在json_data/目录下),可结合file_path和pattern参数进一步缩小读取范围:
SELECT s.$1 FROM @RAW.DEV.STAGE_LOCAL (file_format => 'JSON', file_path => 'json_data/', pattern => '.*\\.json') AS s
内容的提问来源于stack exchange,提问作者LMF
相关产品推荐
相关产品推荐

