

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# DynamoDB 的 Amazon S3 匯入格式
<a name="S3DataImport.Format"></a>

DynamoDB 可以匯入三種格式的資料：CSV、DynamoDB JSON 和 Amazon Ion。

**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
```

如果使用兩組雙引號逸出，則相同的匯入將成功：

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

當文字經過正確逸出和匯入之後，就會如原始 CSV 檔案中一樣顯示：

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

**匯入異質項目類型**

您可以使用單一 CSV 檔案，將不同的項目類型匯入一個資料表。定義標頭列，其中包含所有項目類型的屬性，並為不適用於指定項目的屬性將資料欄保留空白。從匯入的項目省略空資料欄，而不是儲存為空字串。

```
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 格式的檔案可能由多個項目物件組成。每個個別物件均採用 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 格式時，DynamoDB 資料表中使用的 DynamoDB 資料類型會映射至 Ion 資料類型。


| 序號 | 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"
    }
  }
]
```