DynamoDB-AWS CLI-批处理写入项仅插入一行

时间:2018-12-13 14:05:19

标签: amazon-web-services amazon-dynamodb command-line-interface

我使用此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。这也无济于事。

我很确定问题出在文件结构中,但是文档与结构应不一致。

任何想法都将不胜感激。谢谢。

1 个答案:

答案 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对象上使用多个属性相同的名字。