DynamoDB-로드 테이블
테이블로드는 일반적으로 소스 파일 생성, 소스 파일이 DynamoDB와 호환되는 구문을 준수하는지 확인하고, 소스 파일을 대상으로 보낸 다음 성공적으로 채우기를 확인하는 것으로 구성됩니다.
GUI 콘솔, Java 또는 다른 옵션을 사용하여 작업을 수행합니다.
GUI 콘솔을 사용하여 테이블로드
명령 줄과 콘솔의 조합을 사용하여 데이터를로드합니다. 여러 가지 방법으로 데이터를로드 할 수 있으며, 그중 일부는 다음과 같습니다.
- 콘솔
- 명령 줄
- 코드 및
- 데이터 파이프 라인 (가이드 뒷부분에서 설명하는 기능)
그러나 속도를 위해이 예제에서는 셸과 콘솔을 모두 사용합니다. 먼저 다음 구문을 사용하여 소스 데이터를 대상에로드합니다.
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 맵 (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 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();
}
}