

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Formats d’importation Amazon S3 pour DynamoDB
<a name="S3DataImport.Format"></a>

DynamoDB peut importer des données dans trois formats : CSV, JSON DynamoDB et Amazon Ion.

**Topics**
+ [CSV](#S3DataImport.Requesting.Formats.CSV)
+ [Json DynamoDB](#S3DataImport.Requesting.Formats.DDBJson)
+ [Amazon Ion](#S3DataImport.Requesting.Formats.Ion)

## CSV
<a name="S3DataImport.Requesting.Formats.CSV"></a>

Un fichier au format CSV se compose de plusieurs éléments délimités par des sauts de ligne. Par défaut, DynamoDB interprète la première ligne d’un fichier d’importation comme en-tête et s’attend à ce que les colonnes soient délimitées par des virgules. Vous pouvez également définir des en-têtes qui seront appliqués, à condition qu’ils correspondent au nombre de colonnes du fichier. Si vous définissez des en-têtes explicitement, la première ligne du fichier sera importée en tant que valeurs. 

**Note**  
Lors de l’importation à partir de fichiers CSV, toutes les colonnes autres que la plage de hachage et les clés de votre table de base et des index secondaires sont importées en tant que chaînes DynamoDB.

**Échapper les guillemets**

Tous les guillemets présents dans le fichier CSV doivent être échappés. S’ils ne sont pas échappés, comme dans l’exemple suivant, l’importation échoue : 

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

Cette même importation aboutit si les guillemets sont échappés par deux paires de guillemets :

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

Une fois que le texte a été correctement échappé et importé, il apparaît tel qu’il était dans le fichier CSV d’origine :

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

DynamoDB suit la convention de citation CSV standard (RFC 4180) : un guillemet double à l'intérieur d'une valeur de champ est évité en le faisant précéder d'un autre guillemet (). `""` La fonction Backslash escaping (`\"`), courante dans les langages de programmation et dans les résultats de nombreux outils d'exportation de données, *n'est pas* reconnue et un fichier qui l'utilise ne pourra pas être importé. Si vos données sources utilisent des barres obliques inverses, convertissez chaque citation évitée en guillemet doublé avant de l'importer. Par exemple, une valeur exportée sous la forme :

```
"Women's \"Full Length\" Dress"
```

doit être reformaté comme suit avant de pouvoir être importé :

```
"Women's ""Full Length"" Dress"
```

**Formatage des valeurs clés**

*Dans DynamoDB, une clé primaire est soit *une* clé primaire simple (clé de partition), soit une clé primaire composite (clé de partition et clé de tri).* Chaque attribut clé contient une seule valeur scalaire. Si vous voulez une valeur clé qui combine plusieurs champs, par exemple en les joignant `organizationId` et en les `barcode` séparant, vous devez concaténer ces champs en une seule chaîne et les stocker dans un attribut clé unique. `organizationId#barcode` Cette concaténation est une convention d'application ; DynamoDB stocke et associe l'attribut clé sous la forme d'une seule valeur.

Lorsque vous importez ces données depuis un fichier CSV, placez la valeur entièrement jointe dans une seule colonne dont l'en-tête correspond au nom de l'attribut clé. Ne divisez pas les parties en colonnes distinctes : l'importation fait correspondre chaque colonne à un attribut et ne concatène pas les colonnes en une valeur clé. Par exemple, pour une table dont l'attribut clé de partition est nommé `pk` et l'attribut clé de tri est nommé `sk` :

```
pk,sk,barcode
org123#ABC123,number#001,ABC123
org456#XYZ789,number#002,XYZ789
```

Si une valeur clé contient elle-même le séparateur par virgule, placez la valeur entière entre guillemets, par exemple. `"org123,east#ABC123"`

**Importation de types d'articles hétérogènes**

Vous pouvez utiliser un seul fichier CSV pour importer différents types d'articles dans un même tableau. Définissez une ligne d'en-tête qui inclut tous les attributs de vos types d'articles et laissez les colonnes vides pour les attributs qui ne s'appliquent pas à un article donné. Les colonnes vides sont omises de l'élément importé plutôt que stockées sous forme de chaînes vides.

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

Dans cet exemple, les profils utilisateur, les commandes et les produits partagent le même tableau. Chaque type d'élément utilise uniquement les colonnes qui le concernent.

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

Un ficher au format JSON DynamoDB peut comprendre plusieurs objets d’éléments. Chaque objet est au format JSON trié standard et des sauts de ligne sont utilisés en tant que délimiteurs d’éléments. Il s'agit du format [JSON Lines](https://jsonlines.org/) (JSONL) : un objet JSON par ligne, sans tableau encadrant ni virgule entre les éléments. En tant que fonction ajoutée, les exportations à partir d’un point dans le temps sont prises en charge en tant que source d’importation par défaut.

**Note**  
Les nouvelles lignes sont utilisées comme délimiteurs d’éléments pour un fichier au format DynamoDB JSON et ne doivent pas être utilisées dans un objet d’élément.

```
{"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/) est un format de sérialisation de données hiérarchique riche, auto-descriptif et conçu pour répondre aux défis de développement rapide, de découplage et d'efficacité rencontrés lors de la conception d'architectures orientées service à grande échelle.

Lorsque vous importez des données au format Ion, les types de données Ion sont mappés à des types de données DynamoDB dans la nouvelle table DynamoDB.


| Nº de série | Conversion du type de données Ion en 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` | 

Les éléments d’un fichier Ion sont délimités par des sauts de ligne. Chaque ligne commence par un marqueur de version Ion, suivi d'un élément au format Ion.

**Note**  
Dans l'exemple suivant, nous avons formaté les éléments d'un Ion-formatted fichier sur plusieurs lignes pour améliorer la lisibilité.

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