Attribution de noms aux tables, aux bases de données et aux colonnes
Suivez ces directives pour attribuer des noms aux bases de données, aux tables et aux colonnes dans Athena.
Exigences relatives aux noms de base de données, de table et de colonne
-
Les noms de base de données, de table et de colonne dans AWS Glue doivent se présenter sous la forme d’une chaîne UTF-8 composée de lettres minuscules. Notez que dans Athena, les lettres majuscules sont automatiquement converties en minuscules dans les requêtes DDL lors de la création de bases de données, de tables ou de colonnes. La longueur de la chaîne doit être comprise entre 1 et 255 octets.
-
Les espaces en début de nom sont actuellement admis. Toutefois, comme ils peuvent être difficiles à détecter et compliquer l’utilisation des objets après leur création, évitez de créer par inadvertance des noms d’objet comportant des espaces de début.
-
Si vous utilisez un modèle CloudFormation AWS::Glue::Database pour créer une base de données AWS Glue et que vous ne spécifiez pas de nom de base de données, AWS Glue génère automatiquement un nom au format
resource_name–random_stringqui n’est pas compatible avec Athena. -
Vous pouvez utiliser le gestionnaire de catalogue AWS Glue permet de renommer les colonnes, mais pas les noms de tables ou de bases de données. Pour contourner cette limitation, vous devez utiliser une définition de l'ancienne base de données pour créer une base de données portant le nouveau nom. Vous utilisez ensuite les définitions des tables de l'ancienne base de données pour recréer les tables de la nouvelle base de données. Vous pouvez utiliser l'AWS CLI ou le kit SDK AWS Glue pour ce faire. Pour les étapes, consultez Utilisation de l’AWS CLI pour recréer une base de données AWS Glue et ses tables.
Utilisation de minuscules pour les noms de tables et de colonnes de tables dans Athena
Athena accepte les majuscules et les minuscules dans les requêtes DDL et DML, mais les noms sont mis en minuscules au moment de l'exécution de la requête. Pour cette raison, évitez d'utiliser une casse mixte pour les noms de tables ou de colonnes et ne vous fiez pas à la casse seule dans Athena pour distinguer ces noms. Par exemple, si vous utilisez une instruction DDL pour créer une colonne nommée Castle, la colonne créée sera mise en minuscules à castle. Si vous spécifiez ensuite le nom de la colonne dans une requête DML comme Castle ou CASTLE, Athena mettra le nom en minuscules pour exécuter la requête, mais affichera l'en-tête de la colonne en utilisant la casse que vous avez choisie dans la requête.
Les noms de base de données, de tables et de colonnes doivent être inférieurs ou égaux à 255 caractères.
Noms commençant par un trait de soulignement
Lorsque vous créez des tables, utilisez des guillemets simples inversés pour entourer les noms de tables, de vues ou de colonnes qui commencent par un trait de soulignement. Par exemple :
CREATE EXTERNAL TABLE IF NOT EXISTS `_myunderscoretable`( `_id` string, `_index` string) LOCATION 's3://amzn-s3-demo-bucket/'
Noms de table, de vue ou de colonne commençant par des nombres
Lors de l'exécution de requêtes SELECT, CTAS ou VIEW, placez des guillemets autour d'identificateurs tels que les noms de table, de vue ou de colonne commençant par un chiffre. Par exemple :
CREATE OR REPLACE VIEW "123view" AS SELECT "123columnone", "123columntwo" FROM "234table"
Noms de colonnes et types complexes
Pour les types complexes, seuls les caractères alphanumériques, le trait de soulignement (_) et le point (.) sont autorisés dans les noms de colonnes. Pour créer une table et des mappages pour les clés qui ont des caractères restreints, vous pouvez utiliser une instruction DDL personnalisée. Pour plus d'informations, consultez l'article Création de tables dans Amazon Athena à partir de JSON imbriqué et de mappages à l'aide du SerDe JSON
Mots réservés
Certains mots réservés dans Athena doivent être échappés. Pour spécifier des mots-clés réservés dans des instructions DDL, placez-les entre guillemets obliques (`). Pour spécifier des mots-clés réservés dans les instructions SQL SELECT et dans les requêtes sur les vues, placez-les entre des guillemets doubles ('').
Pour de plus amples informations, consultez Échappement des mots-clés réservés dans les requêtes.
Ressources supplémentaires
Pour connaître la syntaxe complète de création de bases de données et de tables, consultez les pages suivantes.
Pour plus d’informations sur les bases de données et les tables dans AWS Glue, consultez Databases et Tables dans le Guide de développement d’AWS Glue.