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
相关产品推荐
相关产品推荐

