Escapar palavras-chave reservadas em consultas
Quando você executa consultas no Athena que incluem palavras-chave reservadas, deve escapá-las entre caracteres especiais. Use as listas deste tópico para verificar quais são as palavras-chave reservadas no Athena.
Para inserir um caractere de escape em palavras-chave reservadas em instruções DDL, coloque-as entre acentos graves (`). Para usar escape em palavras-chave reservadas em instruções SQL SELECT
e em consultas em visualizações, coloque-as entre aspas duplas (").
Palavras-chave reservadas para escape e em instruções de DDL
O Athena usa a lista de palavras-chave reservadas a seguir em suas instruções DDL. Se você usá-las sem efetuar escape, o Athena emitirá um erro. Para inserir um caractere de escape nelas, coloque-as entre acentos graves (`).
Você não pode usar palavras-chave reservadas do DDL como nomes de identificadores em instruções DDL sem colocá-las entre acentos graves (`).
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
Palavras-chave reservadas para escape e em instruções de SQL SELECT
O Athena usa a lista de palavras-chave reservadas a seguir nas instruções SQL SELECT
e nas consultas em visualizações.
Se você usar essas palavras-chave como identificadores, deverá colocá-las entre aspas duplas (") em suas instruções de consulta.
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
Exemplos de consultas com palavras reservadas
A consulta no exemplo a seguir usa acentos graves (`) para efetuar escape das palavras-chave reservadas partition e date relacionadas à DDL que são usadas para um nome de tabela e um dos nomes de coluna:
CREATE EXTERNAL TABLE
`partition`
(`date`
INT, col2 STRING ) PARTITIONED BY (year STRING) STORED AS TEXTFILE LOCATION 's3://amzn-s3-demo-bucket/test_examples/';
As consultas de exemplo a seguir incluem um nome de coluna que contém as palavras-chave reservadas relacionadas ao DDL em instruções ALTER TABLE ADD PARTITION
e ALTER TABLE DROP
PARTITION
. As palavras-chave reservadas do DDL são circunscritas com acentos graves (`):
ALTER TABLE test_table ADD PARTITION (
`date`
= '2018-05-14')
ALTER TABLE test_table DROP PARTITION (
`partition`
= 'test_partition_value')
A consulta de exemplo a seguir inclui uma palavra-chave reservada (end) como um identificador em uma instrução SELECT
. O escape da palavra-chave é efetuado com aspas duplas:
SELECT * FROM TestTable WHERE "end" != nil;
A consulta de exemplo a seguir inclui uma palavra-chave reservada (first) em uma instrução SELECT
. O escape da palavra-chave é efetuado com aspas duplas:
SELECT "itemId"."first" FROM testTable LIMIT 10;