加载表通常包括创建源文件,确保源文件符合与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); Iteratoriter = 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(); } }