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

使用COPY INTO命令向Snowflake加载CSV文件报错问题咨询

报错原因

这个报错的核心是加载的CSV文件与目标表结构不匹配,具体对应两个问题:

预期解析列"VEGETABLE_DETAILS_PLANT_HEIGHT"["HIGH_END_OF_RANGE":5]时已到达记录末尾

  • CSV中第3、8行的字段数少于目标表的5个字段,读取到第5列HIGH_END_OF_RANGE时没有对应数据
  • 隐藏适配问题:你定义的PLANT_NAME字段长度为text(7),但CSV中存在超过7个字符的植物名(比如Eggplant共8个字符),列数问题解决后也会触发字段截断报错
解决方案

方案1:调整表结构+修改加载参数(推荐)

  1. 调整表字段长度适配数据,避免截断:
create or replace table VEGETABLE_DETAILS_PLANT_HEIGHT ( 
   PLANT_NAME text,
   VEG_HEIGHT_CODE text(1), 
   UNIT_OF_MEASURE text(2),
   LOW_END_OF_RANGE number(2),
   HIGH_END_OF_RANGE number(2)
);

如果需要保留字段长度限制,可将PLANT_NAME调整为text(20)即可覆盖所有植物名称长度。

  1. 修改COPY INTO命令,添加列数不匹配适配和错误处理规则:
copy into vegetable_details_plant_height
from @like_a_window_into_an_s3_bucket
files = ( 'veg_plant_height.csv')
file_format = ( 
  format_name=VEG_CHALLENGE_CC
  ERROR_ON_COLUMN_COUNT_MISMATCH = FALSE
  EMPTY_FIELD_AS_NULL = TRUE
)
ON_ERROR = 'CONTINUE';

参数说明:

  • ERROR_ON_COLUMN_COUNT_MISMATCH = FALSE:关闭列数不匹配直接终止加载的规则
  • EMPTY_FIELD_AS_NULL = TRUE:空字段自动填充为NULL存入表中
  • ON_ERROR = 'CONTINUE':遇到错误行时跳过错误行,继续加载其他正常行,也可根据需求替换为SKIP_FILE直接跳过整个错误文件
  1. 加载完成后可执行以下命令查看错误行详情:
select * from table(information_schema.copy_history(
  table_name=>'VEGETABLE_DETAILS_PLANT_HEIGHT',
  start_time=> dateadd(hours, -1, current_timestamp())
));

方案2:预处理CSV文件

如果你需要加载所有行,可提前修改CSV文件,给第3、8行缺失的HIGH_END_OF_RANGE列补充空值或默认数值,再重新上传到S3执行加载即可。

内容的提问来源于stack exchange,提问作者4everMe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:36:02