

# Formatos de importação do Amazon S3 para o DynamoDB
<a name="S3DataImport.Format"></a>

O DynamoDB pode importar dados em três formatos: CSV, DynamoDB JSON e 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>

Um arquivo no formato CSV consiste em vários itens delimitados por novas linhas. Por padrão, o DynamoDB interpreta a primeira linha de um arquivo de importação como o cabeçalho e espera que as colunas sejam delimitadas por vírgulas. Você também pode definir cabeçalhos que serão aplicados, desde que correspondam ao número de colunas no arquivo. Se você definir cabeçalhos explicitamente, a primeira linha do arquivo será importada como valores. 

**nota**  
Ao importar de arquivos CSV, todas as colunas, exceto o intervalo de hash e as chaves da tabela base e dos índices secundários, são importadas como strings do DynamoDB.

**Escape em aspas duplas**

Todos os caracteres de aspas duplas presentes no arquivo CSV devem receber escape. Se não receberem escape, como no exemplo a seguir, a importação falhará: 

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

Essa mesma importação será bem-sucedida se as aspas receberem escape com dois conjuntos de aspas duplas:

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

Depois que o texto receber escape e for importado corretamente, ele aparecerá como no arquivo CSV original:

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

**Importar tipos de item heterogêneos**

É possível usar um único arquivo CSV para importar diferentes tipos de item em uma tabela. Defina uma linha de cabeçalho que inclua todos os atributos nos tipos de item e deixe as colunas vazias para atributos que não se aplicam a um determinado item. As colunas vazias são omitidas do item importado em vez de armazenadas como strings vazias.

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

Neste exemplo, perfis de usuário, pedidos e produtos compartilham a mesma tabela. Cada tipo de item usa somente as colunas que são relevantes para ele.

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

Um arquivo no formato JSON do DynamoDB pode consistir em vários objetos de item. Cada objeto está no formato JSON organizado padrão do DynamoDB, e as novas linhas são usadas como delimitadores de itens. Um recurso adicional é usar exportações de um ponto anterior no tempo como uma fonte de importação como padrão.

**nota**  
Novas linhas são usadas como delimitadores de itens para um arquivo no formato JSON do DynamoDB e não devem ser usadas em um objeto de item.

```
{"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>

O [Amazon Ion](https://amzn.github.io/ion-docs/) é um formato de serialização de dados hierárquico, autodescritivo e altamente compatível com vários tipos de declaração e criado para lidar com os desafios de desacoplamento, desenvolvimento rápido e eficiência enfrentados todos os dias na criação de arquiteturas orientadas a serviços em grande escala.

Quando você importa dados no formato Ion, os tipos de dados do Ion são mapeados para os tipos de dados do DynamoDB na nova tabela do DynamoDB.


| S. Não. | Conversão de tipos de dados Ion em 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` | 

Em um arquivo do Ion, os itens são delimitados por novas linhas. Cada linha começa com um marcador de versão do Ion, seguido por um item no formato Ion.

**nota**  
No exemplo a seguir, formatamos os itens de um arquivo em formato Ion em várias linhas para melhorar a legibilidade.

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