当前位置: 首页 > 知识库问答 >
问题:

Spring使用AggregateItemReader或其他解决方案在读取器中批量读取多行一次

田翰林
2023-03-14
ID1-Adress1-NumberPhone1
ID1-Adress2-NumberPhone2
ID1-Adress3-NumberPhone3
ID2-Adress1-NumberPhone1
ID2-Adress2-NumberPhone2
ID3-Adress1 NumberPhone1
...
ID1-Adress2-NumberPhone2
ID1-Adress3-NumberPhone3
ID2-Adress1-NumberPhone1
ID2-Adress2-NumberPhone2

共有1个答案

皇甫繁
2023-03-14

您可以查看多行示例。在本例中,输入文件的格式如下(与您的情况类似):

BEGIN
INFO,UK21341EAH45,customer1
AMNT,978,98.34
END
BEGIN
INFO,UK21341EAH46,customer2
AMNT,112,18.12
END
...

自定义读取器用于聚合跨多行的项。在本例中,(逻辑)项由beginend(物理)记录分隔。您可以查看MultilineTradeItemReader并使其适合您的情况。

希望这有帮助。

 类似资料:
  • CompositeItemWriter:当我需要将项目平均地分给Writer时,似乎会将所有读取的项目传递给所有的Writer。 BacktoBackPatternClassifier:我并不真正需要分类器,因为我是均匀地拆分项目。 有没有另一种方式,让一个读者和多个作者? 或者我可以在Writer中手动创建线程?

  • 问题内容: 我有这个网页的csv档案。我想阅读下载文件中的某些列(可以在右上角下载csv版本)。 假设我要2列: 59在标题中是 60在标题中是。 但是,由于某些原因,网页的作者有时决定四处移动列。 最后,我想要这样的东西,请记住,价值可能会丢失。 如果这些列保持正确的名称,这将防止我的程序在将来再次更改列时出错。 到目前为止,我已经尝试过各种使用模块的方法,最近都尝试过使用该模块。两者都没有运气

  • 问题内容: 我有一个大的CLOB(大于32kB),我想使用StringBuilder读取为String。如何以最有效的方式做到这一点?我不能将“ int length”构造函数用于StringBuilder,因为我的CLOB的长度比“ int”长,并且需要一个“ long”值。 我对Java I / O类不太满意,并希望获得一些指导。 编辑 - 我尝试使用clobToString()的以下代码:

  • 当使用Spark sql读取jdbc数据时,Spark默认只会启动1个分区。但是当表太大时,Spark读取速度会很慢。 我知道有两种方法可以制作分区: 1.在选项中设置分区列、lowerBound、upperBound和num分区; 2.在选项中设置偏移数组; 但我的情况是: 我的jdbc表没有INT列,或者列字符串可以很容易地用这两种方式的偏移量分隔。 这两种方法在我的情况下行不通,还有其他方法

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

  • 所以我必须阅读5个文件行,显示如下(Java): 我必须输入以分号分隔的数据作为单个变量,即<代码>国际价格;等 从文件中读取时,如何将、、等分为不同的数据类型?目标是构建一个对象列表,其中每个数据都作为构造函数参数。 谢谢你的任何帮助