【问题标题】:DynamoDB create tables in local machineDynamoDB 在本地机器上创建表
【发布时间】:2016-01-25 04:03:40
【问题描述】:

我已将 DynamoDB jar 下载到我的本地 Windows 机器,并且能够使用以下命令启动服务。

java -jar DynamoDBLocal.jar -dbPath .

我可以使用 localhost:8000/shell/ 访问 Web 控制台

但是,我不知道如何创建表,谁能给我语法和任何例子

如果我想创建具有以下详细信息的表,如何插入数据?

表:学生 列:sid、名字、姓氏、地址。

感谢您的投入。

【问题讨论】:

  • 您使用什么语言? (python, java..)
  • 我通过运行tutorial.start() 运行了本教程。这真的很有帮助。

标签: amazon-dynamodb


【解决方案1】:

文档可能有点难以理解。由于您使用的是 dynamodb shell,我假设您正在请求 JavaScript 查询来创建表。

var params = {
TableName: 'student',
KeySchema: [ 
    { 
        AttributeName: 'sid',
        KeyType: 'HASH',
    },
],
AttributeDefinitions: [ 
    {
        AttributeName: 'sid',
        AttributeType: 'N', 
    },
    
    
],
ProvisionedThroughput: { 
    ReadCapacityUnits: 10, 
    WriteCapacityUnits: 10, 
},
};

dynamodb.createTable(params, function(err, data) {
    if (err) ppJson(err); // an error occurred
    else ppJson(data); // successful response

});

在本地db shell的浏览器中运行上面的sn -p

http://localhost:8000/shell/

它创建一个以 'sid' 作为哈希键的表。

插入:

var params = {
    TableName: 'student',
    Item: { // a map of attribute name to AttributeValue
        sid: 123,
        firstname : { 'S': 'abc' },
        lastname : { 'S': 'xyz' },
        address : {'S': 'pqr' },
        ReturnValues: 'NONE', // optional (NONE | ALL_OLD)
        ReturnConsumedCapacity: 'NONE', // optional (NONE | TOTAL | INDEXES)
        ReturnItemCollectionMetrics: 'NONE', // optional (NONE | SIZE)
    }
};
docClient.put(params, function(err, data) {
    if (err) ppJson(err); // an error occurred
    else ppJson(data); // successful response
});

【讨论】:

  • 看了好几天了。这实际上是我第一次看到localhost:8000/shell 被引用。说了很多关于该地区的文档状态!
  • 是的,我花了一天时间才弄清楚出了什么问题。这只是众多服务之一。
  • 您也可以使用dynobase.dev/dynamodb-table-schema-design-tool 来生成params,因为它的结构相当复杂。
【解决方案2】:

我建议使用 docker(但也可以运行 jar):

$ docker run -d -p 8000:8000 amazon/dynamodb-local 

然后就可以通过传入endpoint-url在docker容器中创建表:

$ aws dynamodb create-table \
   --table-name UnifiedTable \
   --attribute-definitions AttributeName=pk,AttributeType=S AttributeName=sk,AttributeType=S \
   --key-schema AttributeName=pk,KeyType=HASH AttributeName=sk,KeyType=RANGE \
   --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
   --endpoint-url http://localhost:8000

你可以像这样检查表是否存在:

$ aws dynamodb list-tables --endpoint-url http://localhost:8000

# Output:
# {
#     "TableNames": [
#         "UnifiedTable"
#     ]
# }

【讨论】:

    【解决方案3】:

    【讨论】:

    • 文档说明我可以像 aws dynamodb list-tables --endpoint-url http://localhost:8000 一样列出本地数据库的表。我如何在本地创建表?例如,node.js 文档指出我可以提供一个 endpoint_url:docs.aws.amazon.com/amazondynamodb/latest/developerguide/…。但 aws.config.update 不再支持 endpoint_url。
    【解决方案4】:
    aws.config.update({
     dynamodb: {
          endpoint: 'http://localhost:8000'
     },
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      相关资源
      最近更新 更多