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

在Spring Batch中更新FlatFileItemReader之后的文件

邓禄
2023-03-14

我目前在Spring批处理作业中有以下处理:

  • FlatFileItemReader读取CSV文件

我不想写入新文件,但我想更新处理过程中读取的同一文件。

我的问题是,在Spring中有没有一种典型的方法可以使用FlatFileItemReader,然后在运行时在处理器中每行更新相同的文件?

谢谢你的帮助。

共有2个答案

姚晋
2023-03-14

简短的回答是否定的,SB不允许你覆盖你正在阅读的同一个文件

更好的做法是编写一个中间文件,然后执行删除/重命名。

写一个临时文件不是一件坏事,尤其是如果你正在处理巨大的输入文件,OutOfMemoryExctive就在眼前;使用临时文件也可以使您的步骤重新启动,并允许您手动检索翻译的文件,如果删除/重命名过程失败。

方航
2023-03-14

您始终可以在spring批处理中编写自定义编写器,如下例所示。将文件中的数据读取到内存中,然后用预期的数据更新同一文件。

https://github.com/pkainulainen/spring-batch-examples/tree/master/spring/src/main/java/net/petrikainulainen/springbatch/custom/in

不仅如此,FlatFileItemReader还不是线程安全的。当然,有一些黑客可以实现线程安全,但使用这些黑客并不是一个好的实践,创建自定义编写器总是很好的。

 类似资料:
  • 我正在编写spring批处理,它从平面文件中读取数据,很少进行处理,并将摘要写入输出文件。与reader相比,我的处理器和写入程序相对更快。我正在使用FlatFileItemReader,并尝试了从50-1000开始的各种提交间隔。我的批处理作业必须以更快的速度处理1000万条记录。请告诉我如何提高FlatFileItemReader的速度。粘贴到我的配置文件和映射器类下面,读取字段集并将值设置为

  • 6.6.2 FlatFileItemReader 译注: 本文中 将 Flat File 翻译为“平面文件”, 这是一种没有特殊格式的非二进制的文件,里面的内容没有相对关系结构的记录。 平面文件(flat file)是最多包含二维(表格)数据的任意类型的文件。在 Spring Batch 框架中 FlatFileItemReader 类负责读取平面文件, 该类提供了用于读取和解析平面文件的基本功能

  • 在我的Android项目中,我必须将TextChangedListener(TextWatcher)添加到编辑文本视图中。它有三个部分: < Li > < code > ontext changed() < Li > < code > beforeTextChanged() < Li > < code > afterTextChanged() 这三个有什么区别?我必须在键侦听器上实现一个表搜索,对

  • 不确定是不是因为okhttp版本,但我尝试了2.3.0和3.4.0之间的几个不同版本,但都不起作用。 有什么想法吗?提前谢了。

  • 用例:步骤1:ItemReader:从数据库中读取1000个ItemProcessor块中的数据:处理这些数据。ItemWriter:将数据写入地图,以便下一步使用 步骤2:ItemReader:读取地图ItemProcessor:处理地图数据并获取新对象。ItemWriter:将新的进程对象持久化到数据库中。 现在我希望Map在整个作业中保持不变,目前我已经为Map创建了一个不同的POJO类,并

  • null 我遇到了一些奇怪的例外 在login.jspx页面上提交简单表单后出现 LocaleFilter照常工作。 我认为配置有问题但找不到原因。 主pom.xml: web.xml null 我准备添加任何额外的信息,以找到这种情况的原因。我希望有人能帮我找到解决这个问题的方法,因为谷歌并不知道这个问题。任何帮助都是有用的。