如何在Java中将csv文件从S3逐行写入DynamoDB?

t5zmwmid  于 2023-06-19  发布在  Java
关注(0)|答案(1)|浏览(88)

我有一个S3存储桶中的csv文件,第一行作为头,其余行作为值。例如data.csv

id | name | age | height
12 | abc  | 23  |  5.7
13 | xyz  | 25  |  5.3

我想在DynamoDB表中逐个写入csv行。为了做到这一点,我想在java中将每行存储为一个对象(StatusObject)。类似于每行StatusObject.setId(data[id])StatusObject.setName(data[name]),然后在DynamoDB中写入此对象。
我有一个ddbMapper,它将对象写入DynamoDB表

ddbMapper.load(StatusObject.class, id);

下面是我检索S3Object的方法:

S3Object s3Object = s3Client.getObject(new GetObjectRequest(s3bucket, s3Key));
S3ObjectInputStream s3ObjectInputStream = s3Object.getObjectContent();

有人能帮我做以下转换吗?
s3ObjectInputStream -> StatusObjectdata.csv将包含不必要的列,我希望避免这些列,只存储与StatusObject匹配的列
谢谢

9udxz4iz

9udxz4iz1#

在AWS Code Example Github repo中有一个类似的例子。但是,它不是读取CSV文件,而是读取位于S3存储桶中的Excel电子表格,并将数据放入Amazon DynamoDB表中。
此示例使用Amazon DynamoDB Enhanced Client Java API(AWS SDK for Java V2)。* * ddbMapper**是Java V1,不推荐使用。您应该考虑从ddbMapper迁移到Enhanced Client。
此示例读取speadsheet中的数据:

并将数据放入DynamoDB表中:

本示例将为您指明正确的方向,即使用AWS Java API从S3存储桶读取数据并将数据放入Amazon DynamoDB表。
https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/usecases/Creating_etl_workflow

相关问题