Snowflake:从S3外部Stage导入时自动填充文件路径与行号
解决方案
要自动填充FILE_NAME_FULL_S3_PATH和LINE_NUMBER字段,你可以利用Snowflake提供的元数据列,在COPY INTO语句中通过子查询组合元数据与源文件数据:
修改后的COPY INTO语句
copy into EMPLOYEE_SKILL (FILE_NAME_FULL_S3_PATH, LINE_NUMBER, SKILL_ID, EMP_ID, SKILL_NAME, SKILL_LEVEL) from ( select metadata$filename, metadata$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';
关键说明
metadata$filename:自动返回当前导入文件的完整S3路径,直接映射到FILE_NAME_FULL_S3_PATH字段。metadata$row_number:返回当前行在源文件中的行号(由于设置了skip_header=1,行号会从第一行数据开始计数,跳过表头),映射到LINE_NUMBER字段。$1到$4对应源CSV文件中的四个字段,需与SKILL_ID、EMP_ID、SKILL_NAME、SKILL_LEVEL的顺序一一匹配,如果源文件列顺序不同,需调整这些变量的位置。
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

