Amazon DynamoDB
Developer Guide (API Version 2012-08-10)
« PreviousNext »
View the PDF for this guide.Go to the AWS Discussion Forum for this product.Go to the Kindle Store to download this guide in Kindle format.Did this page help you?  Yes | No |  Tell us about it...

Load Data into Tables Using the AWS SDK for.NET

In the preceding step, you created sample tables using the console. Now, you can upload sample data to these tables. The following C# code example uses the AWS SDK for .NET helper API to upload sample data. For step-by-step instructions on configuring your AWS credentials, setting the default endpoint and running the sample, see Running .NET Examples for Amazon DynamoDB.

Example - Upload Sample Items Using the AWS SDK for .NET Helper API

using System;
using System.Collections.Generic;
using Amazon.DynamoDBv2;
using Amazon.DynamoDBv2.DocumentModel;
using Amazon.Runtime;
using Amazon.SecurityToken;

namespace amazon.dynamodbv2.documentation
{
  class Program
  {
    private static AmazonDynamoDBClient client;

    static void Main(string[] args)
    {
      try
      {
        var config = new AmazonDynamoDBConfig();
        config.ServiceURL = System.Configuration.ConfigurationManager.AppSettings["ServiceURL"];

        client = new AmazonDynamoDBClient(config);

        // Upload data (using the .NET SDK helper API to upload data)
        UploadSampleProducts();
        UploadSampleForums();
        UploadSampleThreads();
        UploadSampleReplies();

        Console.WriteLine("Data uploaded... To continue, press Enter");
        Console.ReadLine();
      }
      catch (AmazonDynamoDBException e) { Console.WriteLine(e.Message); }
      catch (AmazonServiceException e) { Console.WriteLine(e.Message); }
      catch (Exception e) { Console.WriteLine(e.Message); }
    }

    private static void UploadSampleProducts()
    {
      Table productCatalogTable = Table.LoadTable(client, "ProductCatalog");
      // ********** Add Books *********************
      var book1 = new Document();
      book1["Id"] = 101;
      book1["Title"] = "Book 101 Title";
      book1["ISBN"] = "111-1111111111";
      book1["Authors"] = new List<string> { "Author 1" };
      book1["Price"] = -2; // *** Intentional value. Later used to illustrate scan.
      book1["Dimensions"] = "8.5 x 11.0 x 0.5";
      book1["PageCount"] = 500;
      book1["InPublication"] = true;
      book1["ProductCategory"] = "Book";
      productCatalogTable.PutItem(book1);

      var book2 = new Document();

      book2["Id"] = 102;
      book2["Title"] = "Book 102 Title";
      book2["ISBN"] = "222-2222222222";
      book2["Authors"] = new List<string> { "Author 1", "Author 2" }; ;
      book2["Price"] = 20;
      book2["Dimensions"] = "8.5 x 11.0 x 0.8";
      book2["PageCount"] = 600;
      book2["InPublication"] = true;
      book2["ProductCategory"] = "Book";
      productCatalogTable.PutItem(book2);

      var book3 = new Document();
      book3["Id"] = 103;
      book3["Title"] = "Book 103 Title";
      book3["ISBN"] = "333-3333333333";
      book3["Authors"] = new List<string> { "Author 1", "Author2", "Author 3" }; ;
      book3["Price"] = 2000;
      book3["Dimensions"] = "8.5 x 11.0 x 1.5";
      book3["PageCount"] = 700;
      book3["InPublication"] = false;
      book3["ProductCategory"] = "Book";
      productCatalogTable.PutItem(book3);

      // ************ Add bikes. *******************
      var bicycle1 = new Document();
      bicycle1["Id"] = 201;
      bicycle1["Title"] = "18-Bike 201"; // size, followed by some title.
      bicycle1["Description"] = "201 description";
      bicycle1["BicycleType"] = "Road";
      bicycle1["Brand"] = "Brand-Company A"; // Trek, Specialized.
      bicycle1["Price"] = 100;
      bicycle1["Gender"] = "M";
      bicycle1["Color"] = new List<string> { "Red", "Black" };
      bicycle1["ProductCategory"] = "Bike";
      productCatalogTable.PutItem(bicycle1);

      var bicycle2 = new Document();
      bicycle2["Id"] = 202;
      bicycle2["Title"] = "21-Bike 202Brand-Company A";
      bicycle2["Description"] = "202 description";
      bicycle2["BicycleType"] = "Road";
      bicycle2["Brand"] = "";
      bicycle2["Price"] = 200;
      bicycle2["Gender"] = "M"; // Mens.
      bicycle2["Color"] = new List<string> { "Green", "Black" };
      bicycle2["ProductCategory"] = "Bicycle";
      productCatalogTable.PutItem(bicycle2);

      var bicycle3 = new Document();
      bicycle3["Id"] = 203;
      bicycle3["Title"] = "19-Bike 203";
      bicycle3["Description"] = "203 description";
      bicycle3["BicycleType"] = "Road";
      bicycle3["Brand"] = "Brand-Company B";
      bicycle3["Price"] = 300;
      bicycle3["Gender"] = "W";
      bicycle3["Color"] = new List<string> { "Red", "Green", "Black" };
      bicycle3["ProductCategory"] = "Bike";
      productCatalogTable.PutItem(bicycle3);

      var bicycle4 = new Document();
      bicycle4["Id"] = 204;
      bicycle4["Title"] = "18-Bike 204";
      bicycle4["Description"] = "204 description";
      bicycle4["BicycleType"] = "Mountain";
      bicycle4["Brand"] = "Brand-Company B";
      bicycle4["Price"] = 400;
      bicycle4["Gender"] = "W"; // Women.
      bicycle4["Color"] = new List<string> { "Red" };
      bicycle4["ProductCategory"] = "Bike";
      productCatalogTable.PutItem(bicycle4);

      var bicycle5 = new Document();
      bicycle5["Id"] = 205;
      bicycle5["Title"] = "20-Title 205";
      bicycle4["Description"] = "205 description";
      bicycle5["BicycleType"] = "Hybrid";
      bicycle5["Brand"] = "Brand-Company C";
      bicycle5["Price"] = 500;
      bicycle5["Gender"] = "B"; // Boys.
      bicycle5["Color"] = new List<string> { "Red", "Black" };
      bicycle5["ProductCategory"] = "Bike";
      productCatalogTable.PutItem(bicycle5);
    }

    private static void UploadSampleForums()
    {
      Table forumTable = Table.LoadTable(client, "Forum");

      var forum1 = new Document();
      forum1["Name"] = "Amazon DynamoDB"; // PK
      forum1["Category"] = "Amazon Web Services";
      forum1["Threads"] = 2;
      forum1["Messages"] = 4;
      forum1["Views"] = 1000;

      forumTable.PutItem(forum1);

      var forum2 = new Document();
      forum2["Name"] = "Amazon S3"; // PK
      forum2["Category"] = "Amazon Web Services";
      forum2["Threads"] = 1;

      forumTable.PutItem(forum2);
    }

    private static void UploadSampleThreads()
    {
      Table threadTable = Table.LoadTable(client, "Thread");

      // Thread 1.
      var thread1 = new Document();
      thread1["ForumName"] = "Amazon DynamoDB"; // Hash attribute.
      thread1["Subject"] = "DynamoDB Thread 1"; // Range attribute.
      thread1["Message"] = "DynamoDB thread 1 message text";
      thread1["LastPostedBy"] = "User A";
      thread1["LastPostedDateTime"] = DateTime.UtcNow.Subtract(new TimeSpan(14, 0, 0, 0));
      thread1["Views"] = 0;
      thread1["Replies"] = 0;
      thread1["Answered"] = false;
      thread1["Tags"] = new List<string> { "index", "primarykey", "table" };

      threadTable.PutItem(thread1);

      // Thread 2.
      var thread2 = new Document();
      thread2["ForumName"] = "Amazon DynamoDB"; // Hash attribute.
      thread2["Subject"] = "DynamoDB Thread 2"; // Range attribute.
      thread2["Message"] = "DynamoDB thread 2 message text";
      thread2["LastPostedBy"] = "User A";
      thread2["LastPostedDateTime"] = DateTime.UtcNow.Subtract(new TimeSpan(21, 0, 0, 0));
      thread2["Views"] = 0;
      thread2["Replies"] = 0;
      thread2["Answered"] = false;
      thread2["Tags"] = new List<string> { "index", "primarykey", "rangekey" };

      threadTable.PutItem(thread2);

      // Thread 3.
      var thread3 = new Document();
      thread3["ForumName"] = "Amazon S3"; // Hash attribute.
      thread3["Subject"] = "S3 Thread 1"; // Range attribute.
      thread3["Message"] = "S3 thread 3 message text";
      thread3["LastPostedBy"] = "User A";
      thread3["LastPostedDateTime"] = DateTime.UtcNow.Subtract(new TimeSpan(7, 0, 0, 0));
      thread3["Views"] = 0;
      thread3["Replies"] = 0;
      thread3["Answered"] = false;
      thread3["Tags"] = new List<string> { "largeobjects", "multipart upload" };

      threadTable.PutItem(thread3);
    }

    private static void UploadSampleReplies()
    {
      Table replyTable = Table.LoadTable(client, "Reply");

      // Reply 1 - thread 1.
      var thread1Reply1 = new Document();
      thread1Reply1["Id"] = "Amazon DynamoDB#DynamoDB Thread 1"; // Hash attribute.
      thread1Reply1["ReplyDateTime"] = DateTime.UtcNow.Subtract(new TimeSpan(21, 0, 0, 0)); // Range attribute.
      thread1Reply1["Message"] = "DynamoDB Thread 1 Reply 1 text";
      thread1Reply1["PostedBy"] = "User A";

      replyTable.PutItem(thread1Reply1);

      // Reply 2 - thread 1.
      var thread1reply2 = new Document();
      thread1reply2["Id"] = "Amazon DynamoDB#DynamoDB Thread 1"; // Hash attribute.
      thread1reply2["ReplyDateTime"] = DateTime.UtcNow.Subtract(new TimeSpan(14, 0, 0, 0)); // Range attribute.
      thread1reply2["Message"] = "DynamoDB Thread 1 Reply 2 text";
      thread1reply2["PostedBy"] = "User B";

      replyTable.PutItem(thread1reply2);

      // Reply 3 - thread 1.
      var thread1Reply3 = new Document();
      thread1Reply3["Id"] = "Amazon DynamoDB#DynamoDB Thread 1"; // Hash attribute.
      thread1Reply3["ReplyDateTime"] = DateTime.UtcNow.Subtract(new TimeSpan(7, 0, 0, 0)); // Range attribute.
      thread1Reply3["Message"] = "DynamoDB Thread 1 Reply 3 text";
      thread1Reply3["PostedBy"] = "User B";

      replyTable.PutItem(thread1Reply3);

      // Reply 1 - thread 2.
      var thread2Reply1 = new Document();
      thread2Reply1["Id"] = "Amazon DynamoDB#DynamoDB Thread 2"; // Hash attribute.
      thread2Reply1["ReplyDateTime"] = DateTime.UtcNow.Subtract(new TimeSpan(7, 0, 0, 0)); // Range attribute.
      thread2Reply1["Message"] = "DynamoDB Thread 2 Reply 1 text";
      thread2Reply1["PostedBy"] = "User A";


      replyTable.PutItem(thread2Reply1);

      // Reply 2 - thread 2.
      var thread2Reply2 = new Document();
      thread2Reply2["Id"] = "Amazon DynamoDB#DynamoDB Thread 2"; // Hash attribute.
      thread2Reply2["ReplyDateTime"] = DateTime.UtcNow.Subtract(new TimeSpan(1, 0, 0, 0)); // Range attribute.
      thread2Reply2["Message"] = "DynamoDB Thread 2 Reply 2 text";
      thread2Reply2["PostedBy"] = "User A";

      replyTable.PutItem(thread2Reply2);
    }
  }
}