我使用此AWS CLI命令创建了一个表:
aws dynamodb create-table --table-name test_table --attribute-definitions AttributeName=time_stamp,AttributeType=N AttributeName=watch_uuid,AttributeType=S --key-schema AttributeName=watch_uuid,KeyType=HASH AttributeName=time_stamp,KeyType=RANGE --billing-mode PROVISIONED --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
然后我尝试使用此命令插入两行:
aws dynamodb batch-write-item --request-items file://items.json.1.batch.write.txt
和此文件的内容:
{
"test_table": [
{
"PutRequest": {
"Item": {
"owner_name": {
"S": "Test watch 3"
},
"time_stamp": {
"N": "1541524533453"
},
"watch_uuid": {
"S": "A9A0E8B2-CD8D-464A-8787-383A85919A06_1541524533453_Test watch 3"
},
"y_user_accel": {
"S": "0.07286"
}
}
},
"PutRequest": {
"Item": {
"owner_name": {
"S": "Test watch 4"
},
"time_stamp": {
"N": "1541524533765"
},
"watch_uuid": {
"S": "A9A0E8B2-CD8D-464A-8787-383A85919A06_1541524533453_Test watch 4"
},
"y_user_accel": {
"S": "0.07286"
}
}
}
}
]
}
我没有错误或指示它只会插入1行,但是数据库现在只有1行。我已经尝试过使用该文件的结构,但无济于事。我或者得到一个错误(因为结构错误)或者只插入了一行数据。
我还尝试将配置编号从1更改为25。这也无济于事。
我很确定问题出在文件结构中,但是文档与结构应不一致。
任何想法都将不胜感激。谢谢。
答案 0 :(得分:2)
请看the official documentation中的示例,您需要将格式更改为此:
{
"test_table": [
{
"PutRequest": {
"Item": {
"owner_name": {
"S": "Test watch 3"
},
"time_stamp": {
"N": "1541524533453"
},
"watch_uuid": {
"S": "A9A0E8B2-CD8D-464A-8787-383A85919A06_1541524533453_Test watch 3"
},
"y_user_accel": {
"S": "0.07286"
}
}
}
},
{
"PutRequest": {
"Item": {
"owner_name": {
"S": "Test watch 4"
},
"time_stamp": {
"N": "1541524533765"
},
"watch_uuid": {
"S": "A9A0E8B2-CD8D-464A-8787-383A85919A06_1541524533453_Test watch 4"
},
"y_user_accel": {
"S": "0.07286"
}
}
}
}
]
}
请注意"test_table"
是一个数组。您需要在该数组中提供多个项目。您在该数组中提供了一个带有两个参数的参数,两个参数都名为"PutRequest"
,因此,当解析JSON时,它会以单个“ PutRequest”结尾,因为您不能在JSON对象上使用多个属性相同的名字。