首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用spring batch只读csv文件中的选择性列

使用spring batch只读csv文件中的选择性列
EN

Stack Overflow用户
提问于 2015-10-12 15:43:22
回答 1查看 2.9K关注 0票数 5

有一个csv文件有100列,但我们只需要3-5列,需要加载到数据库中。

我不想在作业xml中指定linetokenizer中的所有100列。

在这种情况下,请建议我们如何处理

EN

回答 1

Stack Overflow用户

发布于 2015-10-12 20:28:57

尝试使用自定义fieldSetMapper。您可以使用它类似于带有索引的ResultSet。只有当您想要自动映射时,才必须列出所有列名。仅指定分隔符,在本例中为",“

代码语言:javascript
运行
复制
<bean id="flatFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader"  scope="step">
    <property name="resource" value="YOURFILE" />
     <property name="lineMapper">
         <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
             <property name="fieldSetMapper">
                <bean class="CUSTOMFIELDSETMAPPER" />
            </property>
             <property name="lineTokenizer">
                <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                    <property name="delimiter" value="," />
                </bean>
            </property>
         </bean>
     </property>
 </bean>

自定义映射器可能是这样的,假设您想要读取第1列和第25列:

代码语言:javascript
运行
复制
public class CustomMapper implements FieldSetMapper<CustomPOJO>{

    @Override
    public CustomPOJO mapFieldSet(FieldSet fieldSet) throws BindException {
        CustomPOJO result = new CustomPOJO();
        result.setName(fieldSet.readString(0));
        result.setAddress(fieldSet.readString(24));
        return result;
    }

}

有关如何使用该读卡器的更多说明,请参阅this tutorial

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33075758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档