

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.

# Création de tables dans Athena
<a name="creating-tables"></a>

Pour créer des tables, vous pouvez exécuter des instructions DDL dans la console Athena, utiliser le formulaire [**Créer une table**](creating-tables-how-to.md#to-create-a-table-using-the-wizard) d’Athena ou utiliser un pilote JDBC ou ODBC. Athena utilise Apache Hive pour définir des tables et créer des bases de données, qui sont essentiellement des espaces de noms logiques de tables. Athena prend en charge diverses bibliothèques de sérialiseur-désérialiseur (SerDe) pour créer des tables pour des formats de données spécifiques. Pour obtenir la liste des SerDe bibliothèques prises en charge, consultez[Choisissez un SerDe pour vos données](supported-serdes.md).

Lorsque vous créez une table de base de données dans Athena, vous décrivez simplement le schéma et l'emplacement où les données de table sont situées dans Simple Storage Service (Amazon S3) pour l'interrogation au moment de la lecture. Athena ne modifie pas vos données dans Amazon S3. Les notions de base de données et de table ont donc une signification légèrement différente par rapport aux systèmes de base de données relationnelle classiques, car les données ne sont pas stockées avec la définition de schéma pour la base de données et la table. 

Athena stocke le schéma dans le AWS Glue Data Catalog et l'utilise pour lire les données lorsque vous interrogez la table à l'aide de SQL. Cette *schema-on-read*approche, qui projette un schéma sur vos données lorsque vous exécutez une requête, élimine le besoin de charger ou de transformer les données.

## Considérations et restrictions
<a name="creating-tables-considerations-and-limitations"></a>

Voici quelques limitations et aspects importants à prendre en compte pour les tables dans Athena.

### Éléments à prendre en compte concernant Amazon S3
<a name="s3-considerations"></a>

Lorsque vous créez une table, vous spécifiez un emplacement de compartiment Simple Storage Service (Amazon S3) pour les données sous-jacentes à l'aide de la clause `LOCATION`. Éléments à prendre en compte :
+ Athena peut uniquement interroger la dernière version des données sur un compartiment Simple Storage Service (Amazon S3) versionné, et ne peut pas interroger les versions précédentes des données.
+ Vous devez disposer d’autorisations pour utiliser des données dans l’emplacement Amazon S3. Pour de plus amples informations, veuillez consulter [Contrôle de l’accès à Amazon S3 depuis Athena](s3-permissions.md).
+ Athena prend en charge l'interrogation des objets stockés avec plusieurs classes de stockage dans le même compartiment spécifié par la clause `LOCATION`. Par exemple, vous pouvez interroger des données dans les objets stockés dans différentes classes de stockage (Standard, Standard – Accès peu fréquent et Hiérarchisation intelligente) dans Simple Storage Service (Amazon S3).
+ Athena prend en charge les [compartiments de type Paiement par le demandeur](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html). Pour savoir comment activer « Requester Pays » pour les compartiments contenant les données source que vous souhaitez interroger dans Athena, consultez [Créer un groupe de travail](creating-workgroups.md).
+ Vous pouvez utiliser Athena pour interroger des objets restaurés à partir de [classes de stockage Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html#sc-glacier) Amazon Glacier Flexible Retrieval et Amazon Glacier Deep Archive (anciennement Glacier) et Amazon Glacier Deep Archive, mais vous devez activer la fonctionnalité table par table. Si vous ne l’activez pas sur une table avant d’exécuter une requête, Athena ignore tous les objets Amazon Glacier Flexible Retrieval et Amazon Glacier Deep Archive de la table lors de l’exécution de la requête. Pour de plus amples informations, veuillez consulter [Interrogation d’objets Amazon Glacier restaurés](querying-glacier.md).

  Pour plus d’informations sur les classes de stockage, consultez [Storage classes](https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html), [Changing the storage class of an object in amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/ChgStoClsOfObj.html), [Transitioning to the GLACIER storage class (object archival)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html#before-deciding-to-archive-objects) et [Requester Pays buckets](https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) dans le *Guide d’utilisation d’Amazon Simple Storage Service*.
+ Si vous exécutez des requêtes sur les compartiments Simple Storage Service (Amazon S3) avec un grand nombre d'objets et que les données ne sont pas partitionnées, de telles requêtes peuvent affecter les limites de débit de demande Get dans Simple Storage Service (Amazon S3) et conduire à des exceptions Simple Storage Service (Amazon S3). Pour éviter des erreurs, partitionnez vos données. En outre, envisagez de régler vos taux de demande Simple Storage Service (Amazon S3). Pour plus d'informations, consultez [Considérations en matière de débit de demandes et de performances](https://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html).

Pour plus d’informations sur la spécification d’un emplacement pour vos données dans Amazon S3, consultez[Spécification de l’emplacement d’une table dans Amazon S3](tables-location-format.md).

### Autres considérations
<a name="creating-tables-other-considerations"></a>
+ **Absence de prise en charge des transformations de données transactionnelles** : Athena ne prend pas en charge les opérations basées sur des transactions (comme celles figurant dans Hive ou Presto) sur des données de table. Pour obtenir la liste complète des mots-clés non pris en charge, consultez [DDL non pris en charge](unsupported-ddl.md).
+ **Opérations de type ACID sur les tables** : lorsque vous créez, mettez à jour ou supprimez des tables, ces opérations sont garanties comme étant conformes à ACID. Par exemple, si plusieurs utilisateurs ou clients tentent de créer ou de modifier une table existante en même temps, un seule opération aboutira.
+ **Tables de type EXTERNAL** : sauf lors de la création de tables [Iceberg](querying-iceberg-creating-tables.md), utilisez toujours le mot-clé `EXTERNAL`. Si vous utilisez `CREATE TABLE` sans le mot clé `EXTERNAL` pour des tables non Iceberg, Athena émet une erreur. Lorsque vous supprimez une table dans Athena, seules les métadonnées de la table sont supprimées ; les données sont conservées dans Simple Storage Service (Amazon S3).
+ **Longueur maximale de la chaîne de requête** : la longueur maximale de la chaîne de requête est de 256 Ko.
+ Si vous utilisez l'opération AWS Glue [CreateTable](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateTable.html)API ou le CloudFormation [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-table.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-table.html)modèle pour créer une table à utiliser dans Athena sans spécifier la `TableType` propriété, puis si vous exécutez une requête DDL du type `SHOW CREATE TABLE` ou`MSCK REPAIR TABLE`, vous pouvez recevoir le message d'erreur FAILED : NullPointerException Name is null. 

  Pour résoudre l'erreur, spécifiez une valeur pour l'[TableInput](https://docs.aws.amazon.com/glue/latest/webapi/API_TableInput.html)`TableType`attribut dans le cadre de l'appel ou du [CloudFormation modèle](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html) d' AWS Glue `CreateTable`API. Parmi les valeurs possibles pour `TableType` figurent `EXTERNAL_TABLE` ou `VIRTUAL_VIEW`.

  Cette exigence s'applique uniquement lorsque vous créez une table à l'aide de l'opération AWS Glue `CreateTable` API ou du `AWS::Glue::Table` modèle. Si vous créez une table pour Athena en utilisant à l'aide d'une instruction DDL ou d'un crawler AWS Glue , la propriété `TableType` est définie pour vous automatiquement. 

**Topics**
+ [Considérations et restrictions](#creating-tables-considerations-and-limitations)
+ [Créez des tables à l'aide AWS Glue de la console Athena](creating-tables-how-to.md)
+ [Spécification de l’emplacement d’une table dans Amazon S3](tables-location-format.md)
+ [Affichage des informations relatives à la table après sa création](creating-tables-showing-table-information.md)

# Créez des tables à l'aide AWS Glue de la console Athena
<a name="creating-tables-how-to"></a>

Vous pouvez créer des tables dans Athena en utilisant AWS Glue le formulaire d'ajout de table ou en exécutant une instruction DDL dans l'éditeur de requêtes Athena.

## Pour créer une table à l'aide du AWS Glue robot
<a name="to-create-a-table-using-the-aws-glue-data-catalog"></a>

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Dans l'éditeur de requêtes, à côté de **Tables and views** (Tables et vues), choisissez **Create** (Créer) puis choisissez le **Crawler AWS Glue **. 

1. Suivez les étapes sur la page **Add crawler** (Ajouter un Crawler) de la console AWS Glue pour ajouter un Crawler. 

   Pour de plus amples informations, veuillez consulter [Utilisation d’un robot pour ajouter une table](schema-crawlers.md).

## Création d'une table à l'aide du formulaire de création de table Athena
<a name="to-create-a-table-using-the-wizard"></a>

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Dans l'éditeur de requêtes, à côté de **Tables and views** (Tables et vues), choisissez **Create** (Créer) puis choisissez **S3 bucket data** (Données de compartiment S3).

1. Dans le formulaire **Create Table From S3 bucket data** (Créer une table à partir des données du compartiment S3), saisissez les informations pour créer votre table, puis choisissez **Create table** (Créer une table). Pour plus d'informations sur les champs du formulaire, consultez [Utiliser un formulaire dans la console Athena pour ajouter un tableau AWS Glue](data-sources-glue-manual-table.md).

## Pour créer une table à l’aide d’une instruction CREATE TABLE dans l’éditeur de requêtes Athena
<a name="to-create-a-table-using-hive-ddl"></a>

1. Dans le menu **Database** (Base de données), choisissez la base de données pour laquelle vous souhaitez créer une table. Si vous ne spécifiez pas de base de données dans votre instruction `CREATE TABLE`, la table est créée dans la base de données actuellement sélectionnée dans l'éditeur de requêtes.

1. Dans l’éditeur de requêtes, saisissez une instruction comme illustré dans l’exemple suivant, puis sélectionnez **Exécuter**.

   ```
   CREATE EXTERNAL TABLE myopencsvtable (
      firstname string,
      lastname string,
      job string,
      country string
   )
   ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
   WITH SERDEPROPERTIES (
      'separatorChar' = ',',
      'quoteChar' = '"',
      'escapeChar' = '\\'
      )
   STORED AS TEXTFILE
   LOCATION 's3://amzn-s3-demo-bucket/mycsv/';
   ```

# Spécification de l’emplacement d’une table dans Amazon S3
<a name="tables-location-format"></a>

Lorsque vous exécutez une `CREATE TABLE` requête dans Athéna, Athéna enregistre votre table dans le catalogue de AWS Glue données, dans lequel Athéna stocke vos métadonnées.

Pour spécifier le chemin d’accès à vos données dans Amazon S3, utilisez la propriété `LOCATION` dans votre instruction `CREATE TABLE`, comme illustré dans l’exemple suivant :

```
CREATE EXTERNAL TABLE `test_table`(
...
)
ROW FORMAT ...
STORED AS INPUTFORMAT ...
OUTPUTFORMAT ...
LOCATION s3://amzn-s3-demo-bucket/folder/
```
+ Pour plus d'informations sur l'attribution de noms aux compartiments, consultez la section [Restrictions et limites des compartiments](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html) du *Guide de l'utilisateur Amazon Simple Storage Service*.
+ Pour plus d'informations sur l'utilisation des dossiers dans Simple Storage Service (Amazon S3), consultez la section [Utilisation des dossiers](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-folders.html) du *Guide de l'utilisateur de la console Amazon Simple Storage Service.* 

La propriété `LOCATION` dans Simple Storage Service (Amazon S3) spécifie *tous* les fichiers représentant votre table. 

**Important**  
Athena lit *toutes* les données stockées dans le dossier Simple Storage Service (Amazon S3) que vous spécifiez. Si vous avez des données que vous *ne* voulez pas qu'Athena lise, ne les stockez pas dans le même dossier Simple Storage Service (Amazon S3) que les données que vous voulez qu'Athena lise.

Lorsque vous spécifiez la propriété `LOCATION` dans l'instruction `CREATE TABLE`, suivez les instructions suivantes :
+ Utilisez une barre oblique de fin.
+ Vous pouvez utiliser un chemin d'accès à un dossier Simple Storage Service (Amazon S3) ou un alias de point d'accès Simple Storage Service (Amazon S3). Pour plus d'informations sur les alias de point d'accès Simple Storage Service (Amazon S3), consultez la rubrique [Utilisation d'un alias de type compartiment pour votre point d'accès](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-alias.html) du *Guide de l'utilisateur Simple Storage Service (Amazon S3)*.

 **Utilisez** :

```
s3://amzn-s3-demo-bucket/folder/
```

```
s3://amzn-s3-demo-bucket-metadata-s3alias/folder/
```

N'utilisez aucun des éléments suivants pour spécifier `LOCATION` pour vos données.
+ N'utilisez pas les noms de fichiers, les traits de soulignement, les caractères génériques ni les modèles glob pour spécifier les emplacements des fichiers.
+ N'ajoutez pas la notation HTTP complète, telle que `s3.amazon.com`, au chemin d'accès au compartiment Simple Storage Service (Amazon S3).
+ N'utilisez pas de dossiers vides comme `//` dans le chemin d'accès, comme ci-après : `S3://amzn-s3-demo-bucket/folder//folder/`. 
+ N’utilisez pas les types de chemins suivants :

  ```
  s3://amzn-s3-demo-bucket
  s3://amzn-s3-demo-bucket/*
  s3://amzn-s3-demo-bucket/mySpecialFile.dat
  s3://amzn-s3-demo-bucket/prefix/filename.csv
  s3://amzn-s3-demo-bucket.s3.amazon.com
  S3://amzn-s3-demo-bucket/prefix//prefix/
  arn:aws:s3:::amzn-s3-demo-bucket/prefix
  s3://arn:aws:s3:<region>:<account_id>:accesspoint/<accesspointname>
  https://<accesspointname>-<number>.s3-accesspoint.<region>.amazonaws.com
  ```

# Affichage des informations relatives à la table après sa création
<a name="creating-tables-showing-table-information"></a>

Une fois que vous avez créé une table dans Athena, son nom s’affiche dans la liste **Tables** située sur la gauche dans la console Athena. Choisissez les trois points verticaux à côté du nom de la table dans la console Athena pour afficher des informations sur la table et la gérer. 
+ **Prévisualisation de la table** – Affiche les 10 premières lignes de toutes les colonnes en exécutant l'instruction `SELECT * FROM "database_name"."table_name" LIMIT 10` dans l'éditeur de requêtes Athena.
+ **Générer une table DDL** — Génère une instruction DDL que vous pouvez utiliser pour recréer la table en exécutant l'`SHOW CREATE TABLE`*table\$1name*instruction dans l'éditeur de requêtes Athena.
+ **Chargement de partitions** – Exécute l'instruction `MSCK REPAIR TABLE table_name` dans l'éditeur de requêtes Athena. Cette option est disponible uniquement si la table comporte des partitions. 
+ **Insert into editor** (Insérer dans l'éditeur) – Insère le nom de la table dans l'éditeur de requêtes à l'emplacement de modification actuel.
+ **Suppression de table** – Affiche une boîte de dialogue de confirmation vous demandant si vous souhaitez supprimer la table. Si vous êtes d'accord, cette option permet d'exécuter l'instruction `DROP TABLE table_name` dans l'éditeur de requêtes d'Athena.
+ **Propriétés de la table** – Indique le nom de la table, le nom de la base de données, l'heure de création et si la table contient des données chiffrées.