Snowflake外部表匹配模式大小写敏感问题求助
Snowflake外部表匹配大小写文件的解决方案
问题描述
现有Snowflake外部表创建语句如下:
create or replace external table table_namewith location = @abc/corpfiles pattern = '.folder1/subfolder/..csv$' auto_refresh = true file_format = (Type=CSV,field_optionally_enclosed_by = '"');
该表仅能匹配小写后缀.csv的文件,无法识别大写后缀.CSV的文件,需调整匹配模式解决大小写敏感问题。
解决方法
Snowflake的pattern参数基于正则表达式实现匹配,默认大小写敏感,可通过以下两种方式实现大小写不敏感匹配:
方式一:添加正则不敏感标记
在正则表达式末尾追加(?i)标记,开启全局大小写不敏感模式,修改后的pattern参数如下:
pattern = '.folder1/subfolder/..csv$(?i)'
此写法可同时匹配.csv、.CSV及任意大小写组合的后缀文件。
方式二:枚举大小写组合
若不想使用正则标记,可直接在正则中枚举每个字符的大小写可能,示例如下:
pattern = '.folder1/subfolder/..[cC][sS][vV]$'
该写法会匹配所有大小写组合的CSV后缀(如.Csv、.cSv等)。
验证方式
修改外部表后,可通过以下命令验证匹配结果:
LIST @abc/corpfiles pattern => '.folder1/subfolder/..csv$(?i)'
确认输出结果包含目标的大小写后缀文件即可。
内容的提问来源于stack exchange,提问作者user401459
相关产品推荐
相关产品推荐

