Dynamodb-load-table

提供:Dev Guides
移動先:案内検索

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

ナビゲーションペインから[テーブル]を選択し、テーブルリストから宛先テーブルを選択します。

*Items* タブを選択して、テーブルの設定に使用したデータを調べます。 [キャンセル]を選択して、テーブルリストに戻ります。

Javaを使用してテーブルをロードする

最初にソースファイルを作成して、Javaを使用します。 ソースファイルはJSON形式を使用します。 各製品には、2つの主キー属性(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メソッド*を使用してロードを実行します。

ファイルを処理してロードするための次のコード例を確認できます-

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