我正在尝试用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>
3条答案
按热度按时间gv8xihay1#
FlatFileItemReader使用SimpleRecordSeparatorPolicy作为开箱即用,适合您的使用情况
您需要设置DefaultRecordSeparatorPolicy
引自其javadoc:
一个RecordSeparatorPolicy,它将所有行视为记录结尾,只要它们没有未终止的引号,并且不以接续标记结尾。
示例XML配置
roejwanj2#
niknxzdl3#
用于阅读带有带引号的换行符的csv文件的完整Bean配置