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

无Stage的Snowflake Copy Into查询获取文件名问题求助

解决无Stage COPY INTO获取文件名的问题

在无Stage的Snowflake COPY INTO语句中,原写法的子查询嵌套会导致metadata$filename等元数据字段无法正确关联到文件源,从而获取失败。以下是修正后的正确写法及关键说明:

修正后的COPY INTO语句

copy into EMPLOYEE_SKILL(
    FILE_NAME_FULL_S3_PATH, 
    LINE_NUMBER, 
    SKILL_ID, 
    EMP_ID, 
    SKILL_NAME, 
    SKILL_LEVEL
)
select 
    metadata$filename, 
    metadata$file_row_number, 
    $1, 
    $2,
    $3,
    $4
from s3://test_bucket/emp/
credentials=(aws_key_id='XXXXXXXXXXXXXX' aws_secret_key='YYYYYYYYYY')
file_format = (type = csv field_delimiter = '|' skip_header = 1)
on_error = 'continue';

核心修正点

  • 移除原语句中多余的子查询t,直接从S3路径源中同时选择元数据字段和文件列,确保元数据与文件数据正确绑定。
  • metadata$filename会返回S3文件的完整路径(例如s3://test_bucket/emp/file1.csv),完全匹配FILE_NAME_FULL_S3_PATH字段的需求。
  • metadata$file_row_number返回当前行在源文件中的行号(跳过表头后的行从1开始计数)。

排查要点(若仍有问题)

  • 确认FILE_NAME_FULL_S3_PATH字段的数据类型为VARCHAR,且长度足够容纳完整的S3文件路径。
  • 验证AWS密钥对目标S3路径拥有读取权限,且路径下确实存在可读取的文件。
  • 通过COPY_HISTORY函数查看COPY INTO的执行日志,排查是否有元数据相关的错误提示。

内容的提问来源于stack exchange,提问作者Dharani S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:52:18