java - 在 Spring 批处理的 FlatfileItemReader 文件中引用的 CSV 中的读取换行符

标签 java spring csv spring-batch

我正在尝试使用 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>

关于java - 在 Spring 批处理的 FlatfileItemReader 文件中引用的 CSV 中的读取换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29509074/

相关文章:

java - 无法初始化代理 - 没有 session

python - 将具有相同 id 的行分组,pandas/python

java - 在java中读取不同行长度的CSV文件

java - Spring中从xml转换为json时如何更改内容?

spring - 如何使用@JmsListener 获取转换后的对象

java - FHIR JAXB XJC 代码生成

java - Java 版本的 ApkSignerTool 问题

csv - awk 根据单个列的唯一值组合其他列的唯一值

Java:WAITING第一帧,同时从第二帧检索数据,然后点击关闭按钮,控件也进入第一帧

java - 从 Vert.x 发起多个出站调用