【问题标题】:How to read complex input pattern using SPring Batch如何使用 SPring Batch 读取复杂的输入模式
【发布时间】:2015-06-30 16:46:44
【问题描述】:

我遇到需要解析复杂平面文件的情况,每条记录分散到多行,如下所示。 BFT ICVMORDR1400210IJ5 *P* 00800RRJNZM 1EK19 1EL ***** 101 00800RRJNZM ******************* 5 201 00800RRJNZM ******************* 5 202 00800RRJNZM ******************* 5 203 00800RRJNZM ******************* 5 204 00800RRJNZM ******************* 5 205 00800RRJNZM ****************** 5 206 00800RRJNZM ****************** 5 301 00800RRJNZM ****************** 5 302 00800RRJNZM ****************** 59401 我有文件的标题行,详细记录分散到最后的 100,200,300,400 系列等 4 种不同类型的记录。如何使用 Spring Batch 解析这个复杂的。

【问题讨论】:

  • 嗨@vinay - 你能用两行例子给出你的输入文件格式吗?可以使用固定长度映射器读取文件并对其进行映射。使用不同的处理器配置,您可以做任何您想做的事情。只是给一些高​​光像 -
  • 行的长度是多少?第一个参数 min/max length ,第二个参数 min max length 等等..如果您有用于映射的输入模型类,则在此处显示。这将有助于回答您的问题
  • 整个记录分散到多行,可以是11到15行,但是记录类型定义了给定记录的结束行。每行80个字符长度,但第一行是主记录以 100 或 101 或 .. 结尾的第二行和几行 200 和第 3 类型是 300 系列和第 4 类型是 400 系列 ....
  • 我认为你可以使用stackoverflow.com/questions/19612355/…作为起点。
  • 不确定如何将多行读取为一条记录

标签: spring spring-batch


【解决方案1】:

读取一行作为记录 - 你可以在你的 xml 文件中使用以下配置 -

  <bean id="customlineTokenizer"
        class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
        <property name="columns" value="1-5,6-10" />
        <property name="names" value="firstname,lastname" />
    </bean>

        <bean id="customFieldSetMapper" class="com.mkyong.model.ReportFieldSetMapper" />


<bean id="cvsFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
    <property name="strict" value="false" />
    <property name="resource" value="classpath:report1" />
    <property name="lineMapper">
        <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
            <property name="lineTokenizer" ref="customlineTokenizer" />
            <property name="fieldSetMapper" ref="customFieldSetMapper" >
            </property>
        </bean>
    </property>

</bean>

【讨论】:

  • 不是一行..我的要求是单条记录分散到多行..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
相关资源
最近更新 更多