我试图用FlatFileItemReader解析CSV文件.此CSV包含一些引用的换行符,如下所示.
email,name abc@z.com,"NEW NAME ABC"
但是这个解析失败了,必填字段为2但实际为1.
我在FlatFileReader配置中缺少什么?
<property name="lineMapper"> <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper"> <!-- The linetokenizer divides individual lines up into units of work --> <property name="linetokenizer"> <bean class="org.springframework.batch.item.file.transform.DelimitedLinetokenizer"> <!-- Names of the CSV columns --> <property name="names" value="email,name" /> </bean> </property> <!-- The fieldSetMapper maps a line in the file to a Product object --> <property name="fieldSetMapper"> <bean class="com.abc.testme.batchjobs.util.CustomerFieldSetMapper" /> </property> </bean> </property>
解决方法
开箱即用的FlatFileItemReader使用
SimpleRecordSeparatorPolicy作为您的用例
>评论部分超过2行或更多行
你需要设置DefaultRecordSeparatorPolicy
引用它的javadoc:
A RecordSeparatorPolicy that treats all lines as record endings,as
long as they do not have unterminated quotes,and do not end in a
continuation marker.
示例xml配置
<bean id="reader" class="org.springframework.batch.item.file.FlatFileItemReader"> ... <property name="recordSeparatorPolicy"> <bean class="org.springframework.batch.item.file.separator.DefaultRecordSeparatorPolicy" /> </property> ... </bean>
原文地址:https://www.jb51.cc/java/130007.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。