Java 如何在spring批处理中写入压缩文件
我正在研究使用SpringBatch在平面文件和数据库之间导入和导出数据。我知道我想做的很容易,但我一辈子都想不出怎么做。我试图做的是从数据库中读取数据并写入压缩文件。注意,我不想将所有数据写入一个未压缩的文件,然后再运行进一步的步骤来压缩它。我需要编写压缩文件作为进程的唯一输出 在我的脑海中,我脑海中有一个管道图像,这可能会让我对批量处理的方式视而不见。我应该创建一个自定义的ZippedFileItemWriter吗?如何将FlatFileItemWriter和压缩版本链接在一起?还有其他更适合这种情况的机制吗 任何指点都将受到感激。我有点惊讶,这不是核心框架的一部分;这似乎不是一个疯狂的想法。也许是的,我只是错过了 问候,Java 如何在spring批处理中写入压缩文件,java,compression,spring-batch,Java,Compression,Spring Batch,我正在研究使用SpringBatch在平面文件和数据库之间导入和导出数据。我知道我想做的很容易,但我一辈子都想不出怎么做。我试图做的是从数据库中读取数据并写入压缩文件。注意,我不想将所有数据写入一个未压缩的文件,然后再运行进一步的步骤来压缩它。我需要编写压缩文件作为进程的唯一输出 在我的脑海中,我脑海中有一个管道图像,这可能会让我对批量处理的方式视而不见。我应该创建一个自定义的ZippedFileItemWriter吗?如何将FlatFileItemWriter和压缩版本链接在一起?还有其他更适
mipper我同意Matthias的回答,但我认为一步解决方案不可重启。您对可重启性有什么要求吗?
查看如果它是基于(文本)行的,它可以使用,或者,它确实可以用于阅读,请参见:@MichaelPralow,我不是问如何压缩数据,我是问如何正确/最佳地将其合并到批处理工作流中。您需要一个自定义编写器,此外,您可以打开JIRA票证以使现有FlatFileItemWriter可扩展(与reader相同,为BufferedWriter提供工厂setter),我没有复杂的重启要求。如果由于某种原因进程失败(这几乎只是因为数据库关闭或磁盘空间不足,这两种情况都不是特别可恢复的),我会从一开始就重新启动进程。事实上,我必须从头开始重新启动,以获取自原始提取过程开始以来数据库上可能发生的任何更新。如果是这样,您只需要自定义“ResourceAwareItemWriterItemStream”的实现,以写入压缩的OutputStream