保留的關鍵字 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

保留的關鍵字

在 Athena 中執行包含預留關鍵字的查詢時,必須以特殊字元括住關鍵字以將它們逸出。請使用此主題中的清單來檢查 Athena 中的預留關鍵字。

若要逸出 DDL 陳述式中的預留關鍵字,請以反引號 (`) 括住它們。若要逸出檢視上的 SQL SELECT 陳述式和查詢中的預留關鍵字,請以雙引號 ('') 將其括住。

DDL 陳述式中的預留關鍵字清單

Athena 在其 DDL 陳述式中使用下列預留關鍵字清單。如果您使用它們時沒有逸出,Athena 會發出錯誤。若要逸出它們,請以反引號 (`) 括住。

您在 DDL 陳述式中使用 DDL 預留關鍵字作為識別符名稱時,必須以反引號 (`) 括住。

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

SQL SELECT 陳述式中的預留關鍵字清單

Athena 在檢視上的 SQL SELECT 陳述式和查詢中,使用下列預留關鍵字清單。

如果您使用這些關鍵字作為識別符,您必須在查詢陳述式中以雙引號 (") 括住它們。

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

含有預留關鍵字的查詢範例

下列範例中的查詢使用反引號 (`),以逸出作為資料表名稱和其中一個欄名稱的 DDL 相關預留關鍵字 partitiondate

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

以下範例查詢在 ALTER TABLE ADD PARTITIONALTER TABLE DROP PARTITION 陳述式中,有一個欄名稱包含 DDL 相關的預留關鍵字。這些 DDL 預留關鍵字以反引號 (`) 括住:

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

以下範例查詢在 SELECT 陳述式中包含預留關鍵字 (end) 作為識別符。此關鍵字以雙引號逸出:

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

以下範例查詢在 SELECT 陳述式中包含預留關鍵字 (first)。此關鍵字以雙引號逸出:

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