如何填充DynamoDB表

时间:2018-04-18 13:24:16

标签: database amazon-web-services aws-lambda amazon-dynamodb alexa

首先,我对DynamoDB和AWS服务一般都很陌生 - 所以当发现所有细节时,我发现它很难。

我的问题是我有一个包含CSV格式数据的excel文件,我希望将所述数据添加到DynamoDB表中,以便轻松访问我想要构建的Alexa函数。表的格式如下:

ID, Name, Email, Number, Room

1534234,    Dr Neesh Patel, Patel.Neesh@work.com,   +44 (0)3424 111111, HW101

有些行有空字段。

但无论我在网上看到什么,似乎都没有一种简单的方法可以实现这一目标 - 我也找不到任何官方手段。因此,由于我对这方面的了解有限 - 我在质疑我是否会以完全错误的方式解决这个问题。首先,我是否在考虑这个错误?我是否应该为后端数据库寻找完全不同的解决方案?我本以为这是一项常见的任务,但缺乏支持或简单的解决方案 - 我错了吗?

其次,如果我这一切都很好 - 怎么办呢?我知道DynamoDB需要特定的JSON格式 - 而且似乎没有一种直接的方式将我的CSV转换为所述格式。

谢谢,伙计们。

2 个答案:

答案 0 :(得分:2)

DynamoDb很酷。但是,在使用它之前,您必须知道您的数据使用模式。对于您的情况,如果您只是按ID分别查询DynamoDb表,那么它很棒。如果您需要通过任何一个或列的组合进行查询,那么就可以找到解决方案:

  • Elastisearch与DynamoDb(价格昂贵),二级索引相结合 DynamoDb表(了解每个二级索引正在创建一个 DynamoDb表的完整副本以及您选择存储的列 在索引),
  • Elasticache与DynamoDb一起使用(用于将搜索绑定回ID) 专栏),
  • RDS而不是DynamoDb('导致sql-ish db更好的时候 你不知道你的数据使用模式,你只是不想 想一想),

这实际上取决于您拥有多少数据以及如何查询应该定义您的体系结构的数据。对我而言,它将归结为衡量每种可用选项的成本和性能。

在将数据导入DynamoDb或RDS表方面:

  • AWS Glue可能适合您
  • AWS Lambda以编程方式将数据存入您的数据存储
  • 也许是其他人

答案 1 :(得分:2)

当我开始使用DynamoDB时遇到了同样的问题。当你来到分布式的大数据系统时,你真的需要设计如何跨系统移动数据。这是你从它开始的地方。

在此明确记录,

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SampleData.LoadData.html

添加更多细节以了解该过程。

第1步:将csv转换为json文件。

如果您拥有少量数据,则可以使用在线工具。

http://www.convertcsv.com/csv-to-json.htm

 {
   "ID": 1534234,
   "Name": "Dr Neesh Patel",
   "Email": "Patel.Neesh@work.com",
   "Number": "+44 (0)3424 111111",
   "Room": "HW101"
 }

您可以看到格式化删除空格等的好处,选择正确的选项并执行转换。

如果您的数据量巨大,那么您需要使用大数据工具并行处理这些数据以进行转换。

第2步:使用CLI上传小型和一次性上传

  

aws dynamodb batch-write-item --request-items file://data.json

如果您想定期上传文件,则需要创建数据管道或其他流程。

希望它有所帮助。