DynamoDB - AWS CLI - элемент пакетной записи вставляет только одну строку - PullRequest
0 голосов
/ 13 декабря 2018

Я создал таблицу с помощью этой команды интерфейса командной строки AWS:

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 голосов
/ 13 декабря 2018

Глядя на пример в официальной документации , вам нужно изменить свой формат на следующий:

{
    "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 не может быть нескольких свойств с одним и тем жеимя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...