

# 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 형식으로 데이터를 가져오면 Ion 데이터 유형이 새 DynamoDB 테이블의 DynamoDB 데이터 유형에 매핑됩니다.


| 일련 번호 | 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"
    }
  }
]
```