メニュー
Amazon DynamoDB
開発者ガイド (API Version 2012-08-10)

ステップ 2: サンプルデータをロードする

このステップでは、Movies テーブルにサンプルデータを入力します。

このシナリオでは、インターネット映画データベース (IMDb) に数千におよぶ映画の情報が格納されているサンプルデータファイルを使用します。映画データは、次の例に示すように JSON 形式です。映画ごとに、yeartitle、および info という JSON マップが設定されています。

Copy
[ { "year" : ... , "title" : ... , "info" : { ... } }, { "year" : ..., "title" : ..., "info" : { ... } }, ... ]

JSON データで次の点に注意してください。

  • yeartitle は、Movies テーブルのプライマリキー属性値として使用します。

  • 残りの info 値は、info という単一の属性に保存します。このプログラムは、JSON を DynamoDB 属性で保存する方法を示しています。

以下は、映画データの例です。

Copy
{ "year" : 2013, "title" : "Turn It Down, Or Else!", "info" : { "directors" : [ "Alice Smith", "Bob Jones" ], "release_date" : "2013-01-18T00:00:00Z", "rating" : 6.2, "genres" : [ "Comedy", "Drama" ], "image_url" : "http://ia.media-imdb.com/images/N/O9ERWAU7FS797AJ7LU8HN09AMUP908RLlo5JF90EWR7LJKQ7@@._V1_SX400_.jpg", "plot" : "A rock band plays their music at high volumes, annoying the neighbors.", "rank" : 11, "running_time_secs" : 5215, "actors" : [ "David Matthewman", "Ann Thomas", "Jonathan G. Neff" ] } }

ステップ 2.1: サンプルデータファイルをダウンロードする

  1. サンプルデータアーカイブ (moviedata.zip) をダウンロードします。

  2. アーカイブからデータファイル (moviedata.json) を抽出します。

  3. moviedata.json ファイルを現在のディレクトリにコピーアンドペーストします。

ステップ 2.2: 映画テーブルにサンプルデータをロードする

サンプルデータをダウンロードしたら、次のプログラムを実行して Movies テーブルに入力します。

  1. Java 開発環境に次のプログラムをコピーアンドペーストします。

    Copy
    // Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. package com.amazonaws.codesamples.gsg; import java.io.File; import java.util.Iterator; import com.amazonaws.client.builder.AwsClientBuilder; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; 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 MoviesLoadData { public static void main(String[] args) throws Exception { AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard() .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://localhost:8000", "us-west-2")) .build(); DynamoDB dynamoDB = new DynamoDB(client); Table table = dynamoDB.getTable("Movies"); JsonParser parser = new JsonFactory().createParser(new File("moviedata.json")); JsonNode rootNode = new ObjectMapper().readTree(parser); Iterator<JsonNode> iter = rootNode.iterator(); ObjectNode currentNode; while (iter.hasNext()) { currentNode = (ObjectNode) iter.next(); int year = currentNode.path("year").asInt(); String title = currentNode.path("title").asText(); try { table.putItem(new Item().withPrimaryKey("year", year, "title", title).withJSON("info", currentNode.path("info").toString())); System.out.println("PutItem succeeded: " + year + " " + title); } catch (Exception e) { System.err.println("Unable to add movie: " + year + " " + title); System.err.println(e.getMessage()); break; } } parser.close(); } }

    このプログラムでは JSON の処理にオープンソースの Jackson ライブラリを使用します。Jackson は AWS SDK for Java に含まれます。別途インストールする必要はありません。

  2. コンパイルして、プログラムを実行します。