当前位置: 首页 > 面试题库 >

读取CSV的换行符,该换行符在spring批处理的FlatfileItemReader中的文件中引用

季俭
2023-03-14
问题内容

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

一个RecordSeparatorPolicy,它将所有行视为记录结尾,只要它们没有不加终止的引号并且不以连续标记结尾。

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>


 类似资料:
  • 我正在创建一个Spring批处理作业,将数据从给定的CSV文件填充到数据库表中。我创建了一个定制的FlatFileItemReader。我的问题是read()方法只被调用一次,所以只有CSV文件的第一行被插入到数据库中。 myModelCsvReader 欢迎任何一致意见。感谢//扩展FlatFileItemReader后的thereader

  • 我已经使用读取和解析csv文件,列由分号分隔。一些文件在某些列之后有(出于未知原因)一个序列,这使得将它们拆分为不同的行。我想转义这些字符并将“第二行”附加到“第一行”,否则之后解析会变得困难。 我可以识别这些行,因为它们后面是数字,而正确的第一列包含时间,如00:00:00。熊猫有可能做到这一点吗。是否读取csv? 实例 如果文件正确,我的代码如下所示: 输出: 问题 如果文件已损坏,则如下所示

  • 如果我的平面文件中有不正确数量的令牌,我会遇到以下异常。 如果我抓住了错误的标记异常我想打印自定义错误日志与文件名,行号和行引起异常。 帮助我。 非常感谢。

  • 问题内容: 我生成了一些JSON,并尝试将其拉入JavaScript中的对象。我不断出错。这是我所拥有的: 这给我一个错误: 使用,我会看到类似的错误消息:Chrome中的“ ” ,以及Firefox和IE中的“ ”。 当我取出后,两种情况下错误都会消失。我似乎无法找出原因的品牌和失败。 问题答案: 我想这就是你想要的: (您需要对字符串中的“ \”进行转义(将其转换为双“ \”),否则它将成为J

  • 问题内容: 我正在尝试确定在Python中读取换行符分隔文件时处理换行符的最佳方法。 我想出的是以下代码,包括一次性代码以进行测试。 有什么建议吗? 问题答案:

  • 读者是这样的, 我想要实现的是,如果在读取CSV文件时,读取器/作业失败,那么下一个计划的jobinstance应该从上次JobExecution失败的行启动读取器。我可以在CustomProcessor process()函数中跟踪计数器处理的行。