我有一个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 -> StatusObject
(data.csv
将包含不必要的列,我希望避免这些列,只存储与StatusObject
匹配的列
谢谢
1条答案
按热度按时间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