开发手册 欢迎您!
软件开发者资料库

DynamoDB - 加载表

DynamoDB加载表 - 从简单和简单的步骤学习DynamoDB,从基本概念到高级概念,包括概述,基本概念,环境,操作工具,数据类型,创建,加载,查询,删除表,API接口,创建,获取,更新,删除项目,批量写入,批量检索,查询,扫描,索引,全局,本地二级索引,聚合,访问控制,权限API,条件,Web身份联合,数据管道,数据备份,监控,CloudTrail,MapReduce,表活动,错误处理,最佳实践。

加载表通常包括创建源文件,确保源文件符合与DynamoDB兼容的语法,将源文件发送到目标,然后确认成功填充.

使用GUI控制台,Java或其他选项来执行任务.

使用GUI控制台加载表

使用组合加载数据命令行和控制台.您可以通过多种方式加载数据,其中一些方式如下:

  • 控制台

  • 命令行

  • 代码以及

  • 数据管道(本教程后面讨论的功能)

但是,对于速度,此示例同时使用shell和控制台.首先,使用以下语法将源数据加载到目标中;

aws dynamodb batch-write-item -–request-items file://[filename]

例如 :

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

通过在 :  

https://console.aws.amazon.com/dynamodb

从导航窗格中选择,然后从表格列表中选择目的地表.

选择项目选项卡,用于检查用于填充表格的数据.选择取消返回表格列表.

使用Java加载表

首先创建源文件来使用Java .我们的源文件使用JSON格式.每个产品都有两个主键属性(ID和Nomenclature)和一个JSON映射(Stat) :

[    {       "ID" : ... ,       "Nomenclature" : ... ,       "Stat" : { ... }   },    {       "ID" : ... ,       "Nomenclature" : ... ,       "Stat" : { ... }    },     ... ]

您可以查看以下示例 :

{    "ID" : 122,    "Nomenclature" : "Particle Blaster 5000",    "Stat" : {       "Manufacturer" : "XYZ Inc.",       "sales" : "1M+",       "quantity" : 500,       "img_src" : "http://www.xyz.com/manuals/particleblaster5000.jpg",       "description" : "A laser cutter used in plastic manufacturing."    } }

下一步是将文件放在应用程序使用的目录中.

Java主要使用 putItem 路径方法来执行加载.

您可以查看以下代码示例用于处理文件并加载它 :

import java.io.File;import java.util.Iterator;import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;import com.amazonaws.services.dynamodbv2.document.DynamoDB;import com.amazonaws.services.dynamodbv2.document.Item;import com.amazonaws.services.dynamodbv2.document.Table;import com.fasterxml.jackson.core.JsonFactory;import com.fasterxml.jackson.core.JsonParser;import com.fasterxml.jackson.databind.JsonNode;import com.fasterxml.jackson.databind.ObjectMapperimport com.fasterxml.jackson.databind.node.ObjectNode;public class ProductsLoadData {     public static void main(String[] args) throws Exception {        AmazonDynamoDBClient client = new AmazonDynamoDBClient()          .withEndpoint("http://localhost:8000");              DynamoDB dynamoDB = new DynamoDB(client);        Table table = dynamoDB.getTable("Products");        JsonParser parser = new JsonFactory()          .createParser(new File("productinfo.json"));              JsonNode rootNode = new ObjectMapper().readTree(parser);       Iterator iter = rootNode.iterator();        ObjectNode currentNode;              while (iter.hasNext()) {          currentNode = (ObjectNode) iter.next();           int ID = currentNode.path("ID").asInt();          String Nomenclature = currentNode.path("Nomenclature").asText();                    try {             table.putItem(new Item()                .withPrimaryKey("ID", ID, "Nomenclature", Nomenclature)                .withJSON("Stat", currentNode.path("Stat").toString()));            System.out.println("Successful load: " + ID + " " + Nomenclature);           } catch (Exception e) {            System.err.println("Cannot add product: " + ID + " " + Nomenclature);            System.err.println(e.getMessage());             break;          }       }       parser.close();    } }