You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将AWS S3文件复制到Snowflake表时提示0文件处理,求匹配规则建议

Snowflake COPY命令匹配含“test”文件失败的解决建议

问题重现

AWS S3存储桶内存在多个名称包含“test”的文件,执行Snowflake COPY命令时提示Copy executed with 0 files processed,已尝试以下脚本但未生效:

COPY INTO mycsvtable
FROM @my_csv_stage/tutorials/dataloading/
PATTERN='.*test.dat'
on_error = 'skip_file';

COPY INTO mycsvtable
FROM @my_csv_stage/tutorials/dataloading/
PATTERN='.*test.*[.]dat'
on_error = 'skip_file';

排查与修正方案

1. 确认文件路径与后缀细节

  • 检查S3目标文件的实际后缀:是否为.dat?存在大小写差异(比如.DAT)的话,需要调整正则支持不区分大小写:
    -- 方式1:显式匹配大小写变体
    PATTERN='.*test.*[.][dD][aA][tT]'
    -- 方式2:使用Snowflake正则的不区分大小写修饰符
    PATTERN='(?i).*test.*[.]dat'
    
  • 确认文件是否在@my_csv_stage/tutorials/dataloading/的子目录中:如果文件嵌套在子目录,确保正则覆盖层级(当前的.*已经支持,但可通过LIST命令验证路径)。

2. 简化正则,逐步验证

先使用宽泛正则确认stage路径和文件可被匹配,再缩小范围:

-- 先匹配所有.dat文件,验证stage路径正确
COPY INTO mycsvtable
FROM @my_csv_stage/tutorials/dataloading/
PATTERN='.*[.]dat'
on_error = 'skip_file';

若上述命令能处理文件,再调整回含“test”的匹配规则;如果文件名中“test”有大小写变化,直接用不区分大小写的写法:

PATTERN='(?i).*test.*[.]dat'

3. 先验证stage中的文件列表

执行LIST命令查看stage下的文件,确认文件名和路径是否符合预期:

LIST @my_csv_stage/tutorials/dataloading/;

从结果中复制一个实际文件名,测试正则是否能匹配到它,避免因文件名特殊字符(如下划线、连字符)导致的匹配失效。

4. 检查COPY命令的其他限制

  • 临时修改on_error参数:将skip_file改为abort_statement,查看是否有具体的文件格式错误,排除因格式不兼容导致的文件被静默跳过。
  • 确认表结构与文件格式匹配:如果文件格式和表字段不对应,即使匹配到文件也可能被跳过,此时通常会有明确的错误提示。

内容的提问来源于stack exchange,提问作者Sherin Shaziya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:05:23