Postgres的Java OutputStream直接导出到S3上传的InputStream

Postgres的Java OutputStream直接导出到S3上传的InputStream,java,postgresql,amazon-s3,inputstream,outputstream,Java,Postgresql,Amazon S3,Inputstream,Outputstream,我有一个每天运行的服务,其目的是从Postgres DB导出delta并将其上传到S3 bucket 我正在使用CopyManager和copyOut方法。 在copyOut中,我有两个选项: a) 作家 b) 输出流 另一方面,我有一个AmazonS3客户端,它有一个PutObjectRequest,它接受File或InputStream 目前,我们有两种方法: 1.导出到文件并从文件上载 2.导出到ByteArrayOutputStream并获取它们的底层byte[]并将其传递到S3上传程序

我有一个每天运行的服务,其目的是从Postgres DB导出delta并将其上传到S3 bucket

我正在使用
CopyManager
copyOut
方法。 在
copyOut
中,我有两个选项: a) 作家 b) 输出流

另一方面,我有一个AmazonS3客户端,它有一个
PutObjectRequest
,它接受
File
InputStream

目前,我们有两种方法: 1.导出到文件并从文件上载 2.导出到
ByteArrayOutputStream
并获取它们的底层
byte[]
并将其传递到S3上传程序的输入流

是否有可能以某种方式连接我们不必使用这个中间文件或可能非常大的字节数组的那两个


换句话说,我想直接上传db delta,使用您现有的方法并没有那么糟糕,当使用stream时,您可以读取stream,一旦您有足够的数据,就直接将其发送到s3

您还可以设置AWS管道,将数据从Postgres RDS实例提取到S3中,您可以进行检查。
AWS没有很好的文档说明如何在Postgres中实现这一点,但当使用mysql时,您会发现有很多可用的文档。使用现有的方法并不是那么糟糕,当使用stream时,您可以读取stream,并且一旦有足够的数据,就直接将其发送到s3

您还可以设置AWS管道,将数据从Postgres RDS实例提取到S3中,您可以进行检查。
AWS没有很好的文档说明如何在Postgres中实现这一点,但当使用mysql时,您会发现有很多可用的文档。

当前的解决方案还不错?文件可能很大-我们不希望将大磁盘连接到VM。字节数组可能很大-我们不希望VM上有太多RAM。我目前正在开发一个定制的OutputStream,它将缓冲转储的数据,并使用多部分上传将数据上传到S3。您应该看看管道,然后我刚刚看到CopyOut对象允许我在导出数据时逐行获取导出的数据。然后,我可以将它们缓冲在配置的MB批中,并作为多部分上传推送。当前的解决方案还不错吗?文件可能很大-我们不希望将大磁盘连接到VM。字节数组可能很大-我们不希望VM上有太多RAM。我目前正在开发一个定制的OutputStream,它将缓冲转储的数据,并使用多部分上传将数据上传到S3。您应该看看管道,然后我刚刚看到CopyOut对象允许我在导出数据时逐行获取导出的数据。然后,我可以将它们缓冲在配置的MB批中,并作为多部分上传推送。