Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在spring批处理中写入压缩文件_Java_Compression_Spring Batch - Fatal编程技术网

Java 如何在spring批处理中写入压缩文件

Java 如何在spring批处理中写入压缩文件,java,compression,spring-batch,Java,Compression,Spring Batch,我正在研究使用SpringBatch在平面文件和数据库之间导入和导出数据。我知道我想做的很容易,但我一辈子都想不出怎么做。我试图做的是从数据库中读取数据并写入压缩文件。注意,我不想将所有数据写入一个未压缩的文件,然后再运行进一步的步骤来压缩它。我需要编写压缩文件作为进程的唯一输出 在我的脑海中,我脑海中有一个管道图像,这可能会让我对批量处理的方式视而不见。我应该创建一个自定义的ZippedFileItemWriter吗?如何将FlatFileItemWriter和压缩版本链接在一起?还有其他更适

我正在研究使用SpringBatch在平面文件和数据库之间导入和导出数据。我知道我想做的很容易,但我一辈子都想不出怎么做。我试图做的是从数据库中读取数据并写入压缩文件。注意,我不想将所有数据写入一个未压缩的文件,然后再运行进一步的步骤来压缩它。我需要编写压缩文件作为进程的唯一输出

在我的脑海中,我脑海中有一个管道图像,这可能会让我对批量处理的方式视而不见。我应该创建一个自定义的ZippedFileItemWriter吗?如何将FlatFileItemWriter和压缩版本链接在一起?还有其他更适合这种情况的机制吗

任何指点都将受到感激。我有点惊讶,这不是核心框架的一部分;这似乎不是一个疯狂的想法。也许是的,我只是错过了

问候,


mipper

我同意Matthias的回答,但我认为一步解决方案不可重启。您对可重启性有什么要求吗?
查看

如果它是基于(文本)行的,它可以使用,或者,它确实可以用于阅读,请参见:@MichaelPralow,我不是问如何压缩数据,我是问如何正确/最佳地将其合并到批处理工作流中。您需要一个自定义编写器,此外,您可以打开JIRA票证以使现有FlatFileItemWriter可扩展(与reader相同,为BufferedWriter提供工厂setter),我没有复杂的重启要求。如果由于某种原因进程失败(这几乎只是因为数据库关闭或磁盘空间不足,这两种情况都不是特别可恢复的),我会从一开始就重新启动进程。事实上,我必须从头开始重新启动,以获取自原始提取过程开始以来数据库上可能发生的任何更新。如果是这样,您只需要自定义“ResourceAwareItemWriterItemStream”的实现,以写入压缩的OutputStream