首页 > 解决方案 > 如何在不本地创建 csv 文件的情况下将员工列表作为 csv 文件上传到 s3?

问题描述

我有一个数据列表List<Employee> employeeList

我实际上将数据作为包含存储在 s3 中的 JSON 对象的文本文件(在示例文件下方提供)。

{"Id":"ab12","firstName":"abc","lastName":"xyz"}
{"Id":"pq34","firstName":"pqr","lastName":"mn"}

我可以使用以下代码片段读取并存储在列表中:

S3Object s3Object = s3Client.getObject(new GetObjectRequest(s3BucketName, fileKey)); 
S3ObjectInputStream s3Stream = s3Object.getObjectContent(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(s3Stream, StringUtils.UTF8)); 
List<Employee> employeeList=null; 
while ((line = reader.readLine()) != null) {
  Employee employee = objectMapper.readValue(line, Employee.class);
  employeeList.add(employee);
}

我创建了一个 Employee 类,如下所示:

public class Employee {
    String Id;
    String firstName;
    String lastName;
}

我不想在本地创建任何文件。我想将我的数据作为 .csv 文件直接写入 S3 Bucket,如下所示。(名称为firstName+lastName

Id     Name
----------------
ab12   abc xyz  
pq34   pqr mn

我遇到的一件事是我们可以将数据作为 InputStream 写入,然后将其传递给 -PutObjectRequest。但 InputStream 也采用我不想创建临时文件的文件路径。

PutObjectRequest putObj = new PutObjectRequest(bucketName, KeyName, inputStream, metadata); 
s3client.putObject(putObj);

另一个疑问是关于上传的 csv 文件的格式是否需要像上述格式一样。我也遇到过,CSV writer但不知道怎么用。

有人可以帮我解决上述问题并在可能的情况下提供示例代码片段吗?

标签: javaamazon-web-servicescsvamazon-s3

解决方案


推荐阅读