DynamoDB - 載入表格



載入表格通常包括建立原始檔、確保原始檔符合與 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** 和**path 方法**來執行載入操作。

您可以檢視以下程式碼示例,瞭解如何處理檔案並將其載入 -

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.ObjectMapper
import com.fasterxml.jackson.databind.node.ObjectNode;

public class ProductsLoadData {  
   public static void main(String[] args) throws Exception {  
      AmazonDynamoDBClient client = new AmazonDynamoDBClient() 
         .withEndpoint("https://: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<JsonNode> 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(); 
   } 
} 
廣告

© . All rights reserved.