メニュー
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. 次のプログラムを MoviesLoadData.php というファイルにコピーアンドペーストします。

    Copy
    <?php require 'vendor/autoload.php'; date_default_timezone_set('UTC'); use Aws\DynamoDb\Exception\DynamoDbException; use Aws\DynamoDb\Marshaler; $sdk = new Aws\Sdk([ 'endpoint' => 'http://localhost:8000', 'region' => 'us-west-2', 'version' => 'latest' ]); $dynamodb = $sdk->createDynamoDb(); $marshaler = new Marshaler(); $tableName = 'Movies'; $movies = json_decode(file_get_contents('moviedata.json'), true); foreach ($movies as $movie) { $year = $movie['year']; $title = $movie['title']; $info = $movie['info']; $json = json_encode([ 'year' => $year, 'title' => $title, 'info' => $info ]); $params = [ 'TableName' => $tableName, 'Item' => $marshaler->marshalJson($json) ]; try { $result = $dynamodb->putItem($params); echo "Added movie: " . $movie['year'] . " " . $movie['title'] . "\n"; } catch (DynamoDbException $e) { echo "Unable to add movie:\n"; echo $e->getMessage() . "\n"; break; } } ?>

    注記

    DynamoDB マーシャラークラスには、JSON ドキュメントと PHP 配列を DynamoDB 形式に変換するメソッドが用意されています。このプログラムでは、$marshaler->marshalJson($json) は JSON ドキュメントを取得して DynamoDB 項目に変換します。

  2. このプログラムを実行するには、次のコマンドを入力します。

    php MoviesLoadData.php