【问题标题】:How to read a complex text file using spring batch having multiple formats如何使用具有多种格式的弹簧批处理读取复杂的文本文件
【发布时间】:2019-05-11 03:38:49
【问题描述】:

我有一个包含多种格式的文本文件.....如何使用 spring 批处理阅读器读取它?

示例:文件

DATE: 09/12/2018.           SERIAL NO: 12345
BANK: HDFC                  IFSC NO: 9876


                    NAME           NO. OF FD.          AMOUNT
                    ABC.                   5            100                  
                    XYZ.                   7            200
                    DEF.                   7            200
                    JKL.                  10            300
TOTAL.                                    29            800

REJECTED REQUEST:                  1 
BRANCH NAME:                  Atlanta 

我上网的每个样本都带有标记器......在这种情况下我如何阅读它,它可能是多个记录和格式

注意***这些值将是固定长度/范围

我希望为完整报告制作的对象:

 private String date;        
 private String Serial; 
 private String bank;        
 private String ifsc;
 private List<RowData> rows;
 private string totalFD;
 private String totalAmount;
 private String rejectedRequest;
 private String branchName

上面提到的行数据对象(可变的行或记录)如下:

 private String name;        
 private String noOfFD; 
 private String amount;

【问题讨论】:

  • 您的情况是什么类型的项目?你说:“这些值将是固定的长度/范围”。您是否尝试过使用FixedLengthTokenizer
  • PatternMatchingCompositeLineMapper mapper = new PatternMatchingCompositeLineMapper(); Map tokenizers = new HashMap(); tokenizers.put("DATE*", mobilePhoneProductLineTokenizer()); tokenizers.put("NAME*", bookProductLineTokenizer()); mapper.setTokenizers(tokenizers); Map> mappers = new HashMap>(); mappers.put("DATE*", mobilePhoneProductFieldSetMapper()); mappers.put("NAME*", bookProductFieldSetMapper()); mapper.setFieldSetMappers(mappers);
  • 我已经使用了类似上面的东西......多个标记器和多个 FieldsetMapper ......“FieldSetMapper”正在做的是......它为每个字段 setMapper 创建不同的对象...... ...我希望将所有标记化的值放入每个文件的单个对象中......如何实现这一点?????
  • @MahmoudBenHassine 你能帮忙吗??????如果需要更多解释,请告诉我?
  • 请不要在 cmets 中添加代码,您可以随时编辑问题并在那里添加代码。 I want all the value tokenized to be put into a single object for each file 我不明白这怎么可能。使用PatternMatchingCompositeLineMapper,您将根据该行的匹配模式为每个(不是文件)拥有不同的对象类型。你可以在这里找到一个例子:github.com/spring-projects/spring-batch/blob/master/…

标签: java spring-boot spring-batch filereader reader


【解决方案1】:

可变的行或记录

由于数据记录的数量是可变的,您可以使用SingleItemPeekableItemReader 来查看前面的项目,看看它是RowData 类型还是页眉/页脚类型。

您可以在此处找到两个与您的用例相似的示例:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2014-05-29
    相关资源
    最近更新 更多