DynamoDB - โหลดตาราง
การโหลดตารางโดยทั่วไปประกอบด้วยการสร้างไฟล์ต้นฉบับการตรวจสอบว่าไฟล์ต้นทางสอดคล้องกับไวยากรณ์ที่เข้ากันได้กับ DynamoDB การส่งไฟล์ต้นทางไปยังปลายทางจากนั้นยืนยันการเติมข้อมูลที่สำเร็จ
ใช้คอนโซล GUI, Java หรือตัวเลือกอื่นในการทำงาน
โหลดตารางโดยใช้ GUI Console
โหลดข้อมูลโดยใช้การรวมกันของบรรทัดคำสั่งและคอนโซล คุณสามารถโหลดข้อมูลได้หลายวิธีซึ่งบางส่วนมีดังต่อไปนี้ -
- คอนโซล
- บรรทัดคำสั่ง
- รหัสและ
- Data Pipeline (คุณลักษณะที่จะกล่าวถึงในบทช่วยสอนในภายหลัง)
อย่างไรก็ตามเพื่อความรวดเร็วตัวอย่างนี้ใช้ทั้งเชลล์และคอนโซล ขั้นแรกให้โหลดข้อมูลต้นทางลงในปลายทางด้วยไวยากรณ์ต่อไปนี้ -
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
เลือก Tables จากบานหน้าต่างนำทางและเลือกตารางปลายทางจากรายการตาราง
เลือกไฟล์ Itemsเพื่อตรวจสอบข้อมูลที่คุณใช้ในการเติมข้อมูลในตาราง เลือกCancel เพื่อกลับไปที่รายการตาราง
โหลดตารางโดยใช้ Java
ใช้ Java โดยสร้างไฟล์ต้นฉบับก่อน ไฟล์ต้นฉบับของเราใช้รูปแบบ JSON ผลิตภัณฑ์แต่ละชิ้นมีแอตทริบิวต์คีย์หลักสองรายการ (ID และระบบการตั้งชื่อ) และแผนที่ JSON (สถิติ) -
[
{
"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 methods เพื่อดำเนินการโหลด
คุณสามารถตรวจสอบตัวอย่างโค้ดต่อไปนี้เพื่อประมวลผลไฟล์และโหลดได้ -
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();
}
}