AWS - 导入JSON文件以加载Dynamo表

时间:2018-04-28 17:17:44

标签: javascript amazon-web-services amazon-dynamodb aws-sdk

我有一个json文件,我想用它在AWS中加载我的Dynamo表。 在AWS控制台中,一次只能创建一条记录。不好:)

本质上,我的.JSON文件是一个对象数组,用于保存表中每列的数据 即:

{
    "Column1": "Column1 Value",
    "Column2": "Column2 Value",
    "Column3": "Column3 Value",
    "Column4": "Column4 Value",
  },

有没有办法通过AWS控制台和导入我的json文件来执行此操作,还是必须使用AWS JS SDK以编程方式执行此操作?

4 个答案:

答案 0 :(得分:5)

您无需使用API​​。您可以使用AWS-CLI,即:

aws dynamodb put-item --table-name MusicCollection --item file://item.json --return-consumed-capacity TOTAL

但您可能需要稍微调整一下JSON格式。

此处有更多示例和文档:

https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html

答案 1 :(得分:3)

E.J。的回答对于单个记录,Brenaman看起来是正确的,但它不能回答原始问题(需要添加记录数组)。

为此,command

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

但是,您需要像这样制作一个修改后的JSON文件(请注意指定数据类型的DynamoDB JSON):

{
    "YourTableName": [
        {   
            "PutRequest": {
                "Item": { 
                    "Column1": { "S": "Column1 Value" },
                    "Column2": { "S": "Column2 Value" },
                    "Column3": { "S": "Column3 Value" },
                    "Column4": { "S": "Column4 Value" },
                }
            }
        },
        {
            "PutRequest": {
                "Item": { 
                    "Column1": { "S": "Column1 Value" },
                    "Column2": { "S": "Column2 Value" },
                    "Column3": { "S": "Column3 Value" },
                    "Column4": { "S": "Column4 Value" },
                }
            }
        }
    ]
}

答案 2 :(得分:0)

我在python中使用了boto3来加载数据

import boto3
import json

dynamodbclient=boto3.resource('dynamodb')
sample_table = dynamodbclient.Table('ec2metadata')

with open('/samplepath/spotec2interruptionevent.json', 'r') as myfile:
    data=myfile.read()

# parse file
obj = json.loads(data)

#instance_id and cluster_id is the Key in dynamodb table 

    response=sample_table.put_item(
                              Item={
                                  'instance_id': instanceId,
                                  'cluster_id': clusterId,
                                  'event':obj

                              }
                              )

以下是javascript的示例:

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Js.02.html#GettingStarted.Js.02.02

答案 3 :(得分:0)

如果您想从具有多个对象的JSON文件中读取代码,则上面的代码不会读取单个JSON对象:

import boto3
import json

dynamodbclient=boto3.resource('dynamodb')
sample_table = dynamodbclient.Table('ec2metadata')

with open('/samplepath/spotec2interruptionevent.json', 'r') as myfile:
    data=myfile.read()

# parse file
objects = json.loads(data)

#instance_id and cluster_id is the Key in dynamodb table 

   for object in objects:
       instance_id = object["instance_id"]
       cluster_id =  object["cluster_id"]
       sample_table.put_item=(item=object)