Formatos de importação do Amazon S3 para o DynamoDB
O DynamoDB pode importar dados em três formatos: CSV, DynamoDB JSON e Amazon Ion.
Tópicos
CSV
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
O DynamoDB segue a convenção padrão de aspas do CSV (RFC 4180): uma aspa dupla dentro do valor de um campo é escapada pela inclusão de outra aspa dupla antes dela (""). O escape com barra invertida (\"), comum em linguagens de programação e na saída de muitas ferramentas de exportação de dados, não é reconhecido, e um arquivo que o utilize não poderá ser importado. Se os dados de origem utilizarem escape com barra invertida, converta cada aspa escapada em duas aspas antes da importação. Por exemplo, um valor exportado como:
"Women's \"Full Length\" Dress"
deve ser reformatado da seguinte forma antes de poder ser importado:
"Women's ""Full Length"" Dress"
Formatação de valores de chave
No DynamoDB, uma chave primária é uma chave primária simples (uma chave de partição) ou uma chave primária composta (uma chave de partição e uma chave de classificação). Cada atributo de chave contém um único valor escalar. Se você quiser um valor de chave que combine vários campos (por exemplo, unindo organizationId e barcode com um delimitador como organizationId#barcode) concatene esses campos em uma única string e armazene-a em um único atributo de chave. Essa concatenação é uma convenção da aplicação; o DynamoDB armazena e compara o atributo de chave como um único valor.
Ao importar esses dados de um arquivo CSV, coloque o valor completo já concatenado em uma única coluna cujo cabeçalho corresponda ao nome do atributo de chave. Não divida as partes em colunas separadas: a importação mapeia cada coluna para um atributo e não concatena colunas para formar um valor de chave. Por exemplo, para uma tabela cujo atributo de chave de partição se chama pk e cujo atributo de chave de classificação se chama sk:
pk,sk,barcode org123#ABC123,number#001,ABC123 org456#XYZ789,number#002,XYZ789
Se um valor de chave contiver o delimitador de vírgula, coloque todo o valor entre aspas duplas, por exemplo "org123,east#ABC123".
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 relevantes para ele.
DynamoDB JSON
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. Esse é o formato JSON Lines
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
O Amazon Ion
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 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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" } } ]