我正在尝试使用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,用于您的用例
您需要设置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()函数中跟踪计数器处理的行。