DynamoDB: tabla de carga

La carga de una tabla generalmente consiste en crear un archivo de origen, asegurarse de que el archivo de origen cumpla con una sintaxis compatible con DynamoDB, enviar el archivo de origen al destino y luego confirmar una población exitosa.

Utilice la consola GUI, Java u otra opción para realizar la tarea.

Cargar tabla usando la consola GUI

Cargue datos usando una combinación de la línea de comando y la consola. Puede cargar datos de varias formas, algunas de las cuales son las siguientes:

  • La consola
  • La línea de comandos
  • Code y también
  • Canalización de datos (una característica que se explica más adelante en el tutorial)

Sin embargo, para mejorar la velocidad, este ejemplo usa tanto el shell como la consola. Primero, cargue los datos de origen en el destino con la siguiente sintaxis:

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

Por ejemplo

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

Verifique el éxito de la operación accediendo a la consola en -

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

Escoger Tables en el panel de navegación y seleccione la tabla de destino de la lista de tablas.

Selecciona el Itemspestaña para examinar los datos que utilizó para completar la tabla. SeleccioneCancel para volver a la lista de la tabla.

Cargar tabla usando Java

Emplee Java creando primero un archivo fuente. Nuestro archivo fuente usa formato JSON. Cada producto tiene dos atributos de clave principal (ID y nomenclatura) y un mapa JSON (Stat):

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

Puede revisar el siguiente ejemplo:

{ 
   "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." 
   } 
}

El siguiente paso es colocar el archivo en el directorio utilizado por su aplicación.

Java utiliza principalmente el putItem y path methods para realizar la carga.

Puede revisar el siguiente ejemplo de código para procesar un archivo y cargarlo:

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("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<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(); 
   } 
}