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

Spring Boot Batch将CSV导入MySQL时解析错误求助

错误原因分析

你的解析错误核心问题出在DelimitedLineTokenizer的配置上,具体有两点:

1. 字段索引越界

Spring Batch中DelimitedLineTokenizer.setIncludedFields()的参数是从0开始计数的索引,而你配置的是new int[]{1,2,3,4,5},这意味着要读取第2到第6个字段。但你的CSV每行只有5个字段(比如报错行输入是1,User 1,abc20nov@gmail.com,abc@college.com,9171046141,对应索引0-4),索引5超出了实际字段数量,直接触发解析异常。

2. 字段名称与实体属性映射不匹配(潜在后续问题)

你给Tokenizer设置的字段名称是"Roll Number","Name of Student"等带空格的名称,但BeanWrapperFieldSetMapper要映射到User类的rollNo、name等驼峰属性,默认的属性匹配逻辑无法识别带空格的名称,即使解决索引问题,后续也会出现属性映射失败的情况。

修复建议
  • 修正字段索引为0-based:
    delimitedLineTokenizer.setIncludedFields(new int[]{0,1,2,3,4});
    
  • 调整字段名称为与User类属性一致的驼峰命名:
    delimitedLineTokenizer.setNames(new String[]{"rollNo","name","personalEmail","officialEmail","mobileNo"});
    
  • 额外注意:Writer的SQL语句里有拼写错误,:officalEmail应改为:officialEmail,否则插入数据库时会出现参数绑定错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:55:25