

# DynamoDB 用の Amazon S3 のインポート形式
<a name="S3DataImport.Format"></a>

DynamoDB は、CSV、DynamoDB JSON、および Amazon Ion の 3 つの形式でデータをインポートできます。

**Topics**
+ [CSV](#S3DataImport.Requesting.Formats.CSV)
+ [DynamoDB Json](#S3DataImport.Requesting.Formats.DDBJson)
+ [Amazon Ion](#S3DataImport.Requesting.Formats.Ion)

## CSV
<a name="S3DataImport.Requesting.Formats.CSV"></a>

CSV 形式のファイルは、改行で区切られた複数の項目で構成されます。デフォルトでは、DynamoDB はインポートファイルの最初の行をヘッダーとして解釈し、列がカンマで区切られることを想定しています。ファイル内の列数と一致する限り、適用されるヘッダーを定義することもできます。ヘッダーを明示的に定義すると、ファイルの最初の行が値としてインポートされます。

**注記**  
CSV ファイルからインポートする場合、ベーステーブルとセカンダリインデックスのハッシュ範囲とキー以外のすべての列が DynamoDB 文字列としてインポートされます。

**二重引用符のエスケープ**

CSV ファイルに存在する二重引用符文字はすべてエスケープする必要があります。エスケープしないと、次の例に示すように、インポートは失敗します。

```
id,value
"123",Women's Full "Length" Dress
```

引用符を 2 組の二重引用符でエスケープすると、この同じインポートが成功します。

```
id,value
"""123""","Women's Full ""Length"" Dress"
```

テキストを適切にエスケープしてインポートすると、元の CSV ファイルと同じように表示されます。

```
id,value
"123",Women's Full "Length" Dress
```

**異種項目タイプのインポート**

1 つの CSV ファイルを使用して、異なる項目タイプを 1 つのテーブルにインポートできます。項目タイプ全体のすべての属性を含むヘッダー行を定義し、特定の項目に適用されない属性の列を空のままにします。空の列は、空の文字列として保存されるのではなく、インポートされた項目から省略されます。

```
PK,SK,EntityType,Name,Email,OrderDate,Amount,ProductName,Quantity
USER#1,PROFILE,User,Alice,alice@example.com,,,,
USER#1,ORDER#2024-01-15,Order,,,2024-01-15,99.99,,
USER#1,ORDER#2024-02-10,Order,,,2024-02-10,149.50,,
PRODUCT#101,METADATA,Product,,,,,Laptop,50
PRODUCT#102,METADATA,Product,,,,,Mouse,200
USER#2,PROFILE,User,Bob,bob@example.com,,,,
USER#2,ORDER#2024-01-20,Order,,,2024-01-20,75.00,,
PRODUCT#103,METADATA,Product,,,,,Keyboard,150
USER#3,PROFILE,User,Charlie,charlie@example.com,,,,
PRODUCT#104,METADATA,Product,,,,,Monitor,30
```

この例では、ユーザープロファイル、注文、製品が同じテーブルを共有します。各項目タイプは、関連する列のみを使用します。

## DynamoDB Json
<a name="S3DataImport.Requesting.Formats.DDBJson"></a>

DynamoDB JSON 形式のファイルは、複数の Item オブジェクトで構成できます。個々のオブジェクトは DynamoDB のスタンダードマーシャリングされた JSON 形式で、改行が項目区切り文字として使用されます。追加機能として、特定の時点からのエクスポートは、デフォルトでインポートソースとしてサポートされています。

**注記**  
新しい行は DynamoDB JSON 形式のファイルの項目区切り文字として使用されるため、項目オブジェクト内では使用しないでください。

```
{"Item": {"Authors": {"SS": ["Author1", "Author2"]}, "Dimensions": {"S": "8.5 x 11.0 x 1.5"}, "ISBN": {"S": "333-3333333333"}, "Id": {"N": "103"}, "InPublication": {"BOOL": false}, "PageCount": {"N": "600"}, "Price": {"N": "2000"}, "ProductCategory": {"S": "Book"}, "Title": {"S": "Book 103 Title"}}}
{"Item": {"Authors": {"SS": ["Author1", "Author2"]}, "Dimensions": {"S": "8.5 x 11.0 x 1.5"}, "ISBN": {"S": "444-444444444"}, "Id": {"N": "104"}, "InPublication": {"BOOL": false}, "PageCount": {"N": "600"}, "Price": {"N": "2000"}, "ProductCategory": {"S": "Book"}, "Title": {"S": "Book 104 Title"}}}
{"Item": {"Authors": {"SS": ["Author1", "Author2"]}, "Dimensions": {"S": "8.5 x 11.0 x 1.5"}, "ISBN": {"S": "555-5555555555"}, "Id": {"N": "105"}, "InPublication": {"BOOL": false}, "PageCount": {"N": "600"}, "Price": {"N": "2000"}, "ProductCategory": {"S": "Book"}, "Title": {"S": "Book 105 Title"}}}
```

## Amazon Ion
<a name="S3DataImport.Requesting.Formats.Ion"></a>

[Amazon Ion](https://amzn.github.io/ion-docs/) は、大規模なサービス指向アーキテクチャをエンジニアリングしながら、急速な開発、デカップリング、効率性といった日々の課題に対処するために構築されたリッチタイプの自己記述型階層型データシリアル化フォーマットです。

データを Ion 形式でインポートすると、Ion データ型は新しい DynamoDB テーブルの DynamoDB データ型にマップされます。


| S 番号 | Ion から DynamoDB へのデータ型変換 | B | 
| --- | --- | --- | 
| `1` | `Ion Data Type` | `DynamoDB Representation` | 
| `2` | `string` | `String (s)` | 
| `3` | `bool` | `Boolean (BOOL)` | 
| `4` | `decimal` | `Number (N)` | 
| `5` | `blob` | `Binary (B)` | 
| `6` | `list (with type annotation $dynamodb_SS, $dynamodb_NS, or $dynamodb_BS)` | `Set (SS, NS, BS)` | 
| `7` | `list` | `List` | 
| `8` | `struct` | `Map` | 

Ion ファイル内の項目は、改行で区切られます。各行は Ion バージョンマーカーで始まり、Ion 形式の項目が続きます。

**注記**  
次の例では、可読性を高めるため、Ion 形式ファイルの項目を複数の行にフォーマットしています。

```
$ion_1_0
[
  {
    Item:{
      Authors:$dynamodb_SS::["Author1","Author2"],
      Dimensions:"8.5 x 11.0 x 1.5",
      ISBN:"333-3333333333",
      Id:103.,
      InPublication:false,
      PageCount:6d2,
      Price:2d3,
      ProductCategory:"Book",
      Title:"Book 103 Title"
    }
  },
  {
    Item:{
      Authors:$dynamodb_SS::["Author1","Author2"],
      Dimensions:"8.5 x 11.0 x 1.5",
      ISBN:"444-4444444444",
      Id:104.,
      InPublication:false,
      PageCount:6d2,
      Price:2d3,
      ProductCategory:"Book",
      Title:"Book 104 Title"
    }
  },
  {
    Item:{
      Authors:$dynamodb_SS::["Author1","Author2"],
      Dimensions:"8.5 x 11.0 x 1.5",
      ISBN:"555-5555555555",
      Id:105.,
      InPublication:false,
      PageCount:6d2,
      Price:2d3,
      ProductCategory:"Book",
      Title:"Book 105 Title"
    }
  }
]
```