Formatos de importación de Amazon S3 para DynamoDB
DynamoDB puede importar datos en tres formatos: CSV, DynamoDB JSON y Amazon Ion.
CSV
Un archivo en formato CSV consta de varios elementos delimitados por saltos de línea. De forma predeterminada, DynamoDB interpreta la primera línea de un archivo de importación como encabezado y espera que las columnas estén delimitadas por comas. También puede definir los encabezados que se aplicarán, siempre que coincidan con el número de columnas del archivo. Si define los encabezados de forma explícita, la primera línea del archivo se importará como valores.
nota
Al importar desde archivos CSV, todas las columnas, excepto el rango de hash y las claves de la tabla base y los índices secundarios, se importan como cadenas de DynamoDB.
Aplicación de la secuencia de escape a las comillas dobles
A los caracteres entre comillas dobles que haya en el archivo CSV se les debe aplicar la secuencia de escape. Si no tienen aplicada la secuencia de escape, como en el siguiente ejemplo, no se realizará la importación:
id,value "123",Women's Full "Length" Dress
Esta misma importación se realizará correctamente si las comillas tienen aplicada la secuencia de escape con dos conjuntos de comillas dobles:
id,value """123""","Women's Full ""Length"" Dress"
Una vez que se haya aplicado correctamente la secuencia de escape al texto y se haya importado, aparecerá tal y como estaba en el archivo CSV original:
id,value "123",Women's Full "Length" Dress
DynamoDB sigue la convención de comillas estándar de CSV (RFC 4180): una comilla doble dentro del valor de un campo se escapa precediéndola de otra comilla doble (""). El escape con barra invertida (\"), que es común en los lenguajes de programación y en la salida de muchas herramientas de exportación de datos, no se reconoce y un archivo que lo usa producirá un error al importar. Si los datos de origen utilizan escape con barra invertida, convierta cada comilla con escape en una comilla doble antes de importarlos. Por ejemplo, un valor exportado como:
"Women's \"Full Length\" Dress"
se debe reformatear de la siguiente manera antes de poder importarlo:
"Women's ""Full Length"" Dress"
Formateo de los valores clave
En DynamoDB, una clave principal puede ser una clave principal simple (una clave de partición) o una clave primaria compuesta (una clave de partición y una clave de clasificación). Cada atributo de clave contiene un único valor escalar. Si desea un valor de clave que combine varios campos (por ejemplo, uniendo organizationId y barcode con un delimitador como organizationId#barcode), debe concatenar esos campos en una cadena y almacenarla en un único atributo de clave. Esta concatenación es una convención de aplicación; DynamoDB almacena y compara el atributo de clave como un valor.
Al importar estos datos desde CSV, coloque el valor totalmente unido en una sola columna cuyo encabezado coincida con el nombre del atributo de clave. No divida las partes en columnas independientes: la importación asigna cada columna a un atributo y no concatena las columnas en un valor de clave. Por ejemplo, en el caso de una tabla cuyo atributo de clave de partición se denomine pk y cuyo atributo de clave de clasificación se denomine sk:
pk,sk,barcode org123#ABC123,number#001,ABC123 org456#XYZ789,number#002,XYZ789
si el valor de una clave contiene el delimitador de coma, escriba todo el valor entre comillas dobles, por ejemplo "org123,east#ABC123".
Importación de tipos de elementos heterogéneos
Puede utilizar un único archivo CSV para importar distintos tipos de elementos a una tabla. Defina una fila de encabezado que incluya todos los atributos de los tipos de elementos y deje las columnas vacías para los atributos que no se apliquen a un elemento determinado. Las columnas vacías se omiten del elemento importado en lugar de guardarse como cadenas vacías.
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
En este ejemplo, los perfiles de usuario, los pedidos y los productos comparten la misma tabla. Cada tipo de elemento utiliza solo las columnas correspondientes.
DynamoDB Json
Un archivo en formato DynamoDB JSON puede constar de varios objetos Item. Cada objeto individual está en formato JSON serializado estándar de DynamoDB y los saltos de línea se utilizan como delimitadores de elementos. Este es el formato de Líneas JSON
nota
Las líneas nuevas se utilizan como delimitadores de elementos para un archivo en formato JSON de DynamoDB y no deben utilizarse dentro de un objeto de elemento.
{"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
Amazon Ion
Cuando se importan datos en formato Ion, los tipos de datos de Ion se asignan a los tipos de datos de DynamoDB en la nueva tabla de DynamoDB.
| S. No. | Conversión de tipos de datos de Ion a DynamoDB | B |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Los elementos de un archivo de Ion están delimitados por saltos de línea. Cada línea comienza con un marcador de versión Ion, seguido de un elemento en formato Ion.
nota
En el siguiente ejemplo, hemos dado formato a los elementos de un archivo con formato Ion en varias líneas para mejorar la legibilidad.
$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" } } ]