保留关键字 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

保留关键字

当您在 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://test_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')

以下查询示例包含一个保留关键字 (end) 作为 SELECT 语句中的标识符。此关键字用双引号进行转义:

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

以下查询示例在 SELECT 语句中包含一个保留关键字 (first)。此关键字用双引号进行转义:

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