Все это можно сделать в памяти, при условии, что у вас достаточно памяти для вашей таблицы, или прочитать и загрузить только сегменты таблицы.
Если вы go с Python, то в документации S3 MultipartUpload говорится, что он допускает bytes
или файл для каждого MultipartUploadPart . Это должно быть похожим для других языков. Таким образом, вы можете прочитать всю таблицу или сегмент, преобразовать их в csv-подобные строки, преобразовать их в bytes
и затем запустить MultipartUpload. Здесь не нужны файлы на диске.
Если вы go с Java, вы можете использовать InputStreams в качестве источника для вашей загрузки. Чтобы преобразовать ваш OutputStream в InputStream, взгляните на этот ответ .
AmazonS3 s3 = new AmazonS3Client(new BasicAWSCredentials("accessKey","secretKey"));
s3.putObject(new PutObjectRequest("mybucket", "myfile", inputStream));
Если вам, однако, просто нужна резервная копия вашей таблицы, тогда я предлагаю использовать pg_dump
и загрузку полученного файла на S3.