DynamoDB - Tabella di carico
Il caricamento di una tabella consiste generalmente nella creazione di un file di origine, assicurandosi che il file di origine sia conforme a una sintassi compatibile con DynamoDB, inviando il file di origine alla destinazione e quindi confermando un popolamento corretto.
Utilizza la console GUI, Java o un'altra opzione per eseguire l'attività.
Carica la tabella utilizzando la console della GUI
Carica i dati utilizzando una combinazione di riga di comando e console. Puoi caricare i dati in diversi modi, alcuni dei quali sono i seguenti:
- La console
- La riga di comando
- Codice e anche
- Data Pipeline (una funzionalità discussa più avanti nel tutorial)
Tuttavia, per la velocità, questo esempio utilizza sia la shell che la console. Innanzitutto, carica i dati di origine nella destinazione con la seguente sintassi:
aws dynamodb batch-write-item -–request-items file://[filename]
Ad esempio:
aws dynamodb batch-write-item -–request-items file://MyProductData.json
Verificare il successo dell'operazione accedendo alla console su -
https://console.aws.amazon.com/dynamodb
Scegliere Tables dal riquadro di navigazione e selezionare la tabella di destinazione dall'elenco delle tabelle.
Seleziona il Itemsscheda per esaminare i dati utilizzati per popolare la tabella. SelezionareCancel per tornare all'elenco delle tabelle.
Carica la tabella utilizzando Java
Utilizza Java creando prima un file sorgente. Il nostro file sorgente utilizza il formato JSON. Ogni prodotto ha due attributi chiave primaria (ID e nomenclatura) e una mappa JSON (Stat) -
[
{
"ID" : ... ,
"Nomenclature" : ... ,
"Stat" : { ... }
},
{
"ID" : ... ,
"Nomenclature" : ... ,
"Stat" : { ... }
},
...
]
Puoi rivedere il seguente esempio:
{
"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."
}
}
Il passaggio successivo consiste nel posizionare il file nella directory utilizzata dall'applicazione.
Java utilizza principalmente l'estensione putItem e path methods per eseguire il carico.
È possibile rivedere il seguente esempio di codice per elaborare un file e caricarlo:
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();
}
}