Échappement des mots-clés réservés dans les requêtes - Amazon Athena

Échappement des mots-clés réservés dans les requêtes

Lorsque vous exécutez des requêtes dans Athena qui incluent des mots-clés réservés, vous devez le spécifier en les plaçant entre caractères spéciaux. Utilisez les listes de cette rubrique pour vérifier quels mots-clés sont réservés dans Athena.

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 ('').

Mots-clés réservés à échapper dans les instructions DDL

Athena utilise la liste suivante de mots-clés réservés dans ses instructions DDL. Si vous les utilisez sans les spécifier, Athena rencontre une erreur. Pour les spécifier, placez-les entre guillemets obliques (`).

Vous ne pouvez pas utiliser des mots-clés réservés DDL comme noms identificateurs dans des instructions DDL sans les placer entre guillemets obliques (`).

ALL, ALTER, AND, ARRAY, AS, AUTHORIZATION, BETWEEN, BIGINT, BINARY, BOOLEAN, BOTH, BY, CASE, CASHE, CAST, CHAR, COLUMN, CONF, CONSTRAINT, COMMIT, CREATE, CROSS, CUBE, CURRENT, CURRENT_DATE, CURRENT_TIMESTAMP, CURSOR, DATABASE, DATE, DAYOFWEEK, DECIMAL, DELETE, DESCRIBE, DISTINCT, DIV, DOUBLE, DROP, ELSE, END, EXCHANGE, EXISTS, EXTENDED, EXTERNAL, EXTRACT, FALSE, FETCH, FLOAT, FLOOR, FOLLOWING, FOR, FOREIGN, FROM, FULL, FUNCTION, GRANT, GROUP, GROUPING, HAVING, IF, IMPORT, IN, INNER, INSERT, INT, INTEGER, INTERSECT, INTERVAL, INTO, IS, JOIN, LATERAL, LEFT, LESS, LIKE, LOCAL, MACRO, MAP, MORE, NONE, NOT, NULL, NUMERIC, OF, ON, ONLY, OR, ORDER, OUT, OUTER, OVER, PARTIALSCAN, PARTITION, PERCENT, PRECEDING, PRECISION, PRESERVE, PRIMARY, PROCEDURE, RANGE, READS, REDUCE, REGEXP, REFERENCES, REVOKE, RIGHT, RLIKE, ROLLBACK, ROLLUP, ROW, ROWS, SELECT, SET, SMALLINT, START,TABLE, TABLESAMPLE, THEN, TIME, TIMESTAMP, TO, TRANSFORM, TRIGGER, TRUE, TRUNCATE, UNBOUNDED,UNION, UNIQUEJOIN, UPDATE, USER, USING, UTC_TIMESTAMP, VALUES, VARCHAR, VIEWS, WHEN, WHERE, WINDOW, WITH

Mots-clés réservés à échapper dans les instructions SQL SELECT

Athena utilise la liste suivante de mots-clés réservés dans ses instructions SQL SELECT et les requêtes sur des vues.

Si vous utilisez ces mots-clés comme identificateurs, vous devez les placer entre guillemets doubles (") dans les instructions de votre requête.

ALTER, AND, AS, BETWEEN, BY, CASE, CAST, CONSTRAINT, CREATE, CROSS, CUBE, CURRENT_CATALOG, CURRENT_DATE, CURRENT_PATH, CURRENT_SCHEMA, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, DEALLOCATE, DELETE, DESCRIBE, DISTINCT, DROP, ELSE, END, ESCAPE, EXCEPT, EXECUTE, EXISTS, EXTRACT, FALSE, FIRST, FOR, FROM, FULL, GROUP, GROUPING, HAVING, IN, INNER, INSERT, INTERSECT, INTO, IS, JOIN, JSON_ARRAY, JSON_EXISTS, JSON_OBJECT, JSON_QUERY, JSON_TABLE, JSON_VALUE, LAST, LEFT, LIKE, LISTAGG, LOCALTIME, LOCALTIMESTAMP, NATURAL, NORMALIZE, NOT, NULL, OF, ON, OR, ORDER, OUTER, PREPARE, RECURSIVE, RIGHT, ROLLUP, SELECT, SKIP, TABLE, THEN, TRIM, TRUE, UESCAPE, UNION, UNNEST, USING, VALUES, WHEN, WHERE, WITH

Exemples de requêtes avec mots réservés

La requête de l'exemple suivant utilise des accents graves (`) pour mettre en échappement les mots-clés réservés DDL partition et date qui sont utilisés pour un nom de table et l'un des noms de colonnes :

CREATE EXTERNAL TABLE `partition` ( `date` INT, col2 STRING ) PARTITIONED BY (year STRING) STORED AS TEXTFILE LOCATION 's3://amzn-s3-demo-bucket/test_examples/';

L'exemple de requête suivant inclut un nom de colonne contenant les mots-clés réservés DDL dans les instructions ALTER TABLE ADD PARTITION et les ALTER TABLE DROP PARTITION. Les mots-clés réservés DDL sont placés entre accents graves (`) :

ALTER TABLE test_table ADD PARTITION (`date` = '2018-05-14')
ALTER TABLE test_table DROP PARTITION (`partition` = 'test_partition_value')

Dans l'exemple suivant, la requête comprend un mot-clé réservé (fin) comme identificateur dans une instruction SELECT. Le mot-clé est placé entre guillemets droits :

SELECT * FROM TestTable WHERE "end" != nil;

Dans l'exemple suivant, la requête comprend un mot-clé réservé (en premier) comme identificateur dans une instruction SELECT. Le mot-clé est placé entre guillemets droits :

SELECT "itemId"."first" FROM testTable LIMIT 10;