我有一个将选定数据从 Postgres 移动到 Amazon S3 的用例。这应该一步完成。我正在编写一个java程序来完成这个任务。
我找到了一种分两步复制数据的方法。我使用 CopyManager 库和 copyOut 方法将数据获取到本地。之后,我使用 Java 将相同的文件移至 S3 中。
postgres 代码将数据获取到我的本地
CopyManager copyManager = new CopyManager((BaseConnection) con);
FileWriter fileWriter = new FileWriter("file.csv");
copyManager.copyOut("COPY (SELECT stmt) TO STDOUT WITH DELIMITER '\t' CSV HEADER", fileWriter);
Run Code Online (Sandbox Code Playgroud)
AWS代码从本地转移到S3
AmazonS3 conn = new AmazonS3Client(credentials);
conn.setEndpoint("xxx.com");
conn.putObject(
bucket1.getName(),
"request.json",
new File("file.csv")
);
Run Code Online (Sandbox Code Playgroud)
我希望它会一次性发生,而不是写入文件然后将文件移动到 S3。