Reservierte Schlüsselwörter in Abfragen umgehen - Amazon Athena

Reservierte Schlüsselwörter in Abfragen umgehen

Wenn Sie Abfragen in Athena ausführen, die reservierte Schlüsselwörter enthalten, müssen Sie sie als Escapezeichen mit Sonderzeichen umgeben, um ihre Verarbeitung zu verhindern. Überprüfen Sie anhand der Listen in diesem Thema, welche Schlüsselwörter in Athena reserviert sind.

Um reservierte Schlüsselwörter in DDL-Anweisungen mit Escapezeichen zu versehen, schließen Sie sie in einfache umgekehrte Anführungszeichen (`) ein. Um reservierte Schlüsselwörter in SQL-SELECT-Anweisungen und in Abfragen in Ansichten mit Escape-Zeichen zu versehen, schließen Sie sie in doppelte Anführungszeichen (") ein.

Reservierte Schlüsselwörter, die in DDL-Anweisungen umgegangen werden müssen

Athena verwendet die folgende Liste reservierter Schlüsselwörter in seinen DDL-Anweisungen. Wenn Sie sie verwenden, ohne sie mit einem Escapezeichen zu versehen, gibt Athena eine Fehlermeldung aus. Um sie mit Escapezeichen zu versehen, schließen Sie sie in einfache umgekehrte Anführungszeichen (`) ein.

Sie können DDL-reservierte Schlüsselwörter als Bezeichnernamen in DDL-Anweisungen nur verwenden, wenn Sie sie in einfache umgekehrte Anführungszeichen (`) einschließen.

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

Reservierte Schlüsselwörter, die in SQL-SELECT-Anweisungen umgegangen werden müssen

Athena verwendet die folgende Liste reservierter Schlüsselwörter in SELECT-Anweisungen von SQL und in Abfragen in Ansichten.

Wenn Sie diese Schlüsselwörter als Bezeichner verwenden, müssen Sie sie in Ihren Abfrageanweisungen in doppelte Anführungszeichen (") einschließen.

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

Beispiele für Abfragen mit reservierten Wörtern

Die Abfrage im folgenden Beispiel verwendet einfache umgekehrte Anführungszeichen (`), um die DDL-bezogenen reservierten Schlüsselwörter partition und date, die für einen Tabellennamen und einen der Spaltennamen verwendet werden, mit Escapezeichen zu versehen:

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

Die Abfragen im folgenden Beispiel enthalten einen Spaltennamen mit den DDL-bezogenen reservierten Schlüsselwörtern in ALTER TABLE ADD PARTITION- und ALTER TABLE DROP PARTITION-Anweisungen. Die DDL-reservierten Schlüsselwörter stehen in einfachen umgekehrten Anführungszeichen (`):

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

Die Abfrage im folgenden Beispiel enthält ein reserviertes Schlüsselwort (End) als Bezeichner in einer SELECT-Anweisung. Das Schlüsselwort ist als Escapezeichen mit doppelten Anführungszeichen versehen:

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

Die Abfrage im folgenden Beispiel enthält ein reserviertes Schlüsselwort (first) als Bezeichner in einer SELECT-Anweisung. Das Schlüsselwort ist als Escapezeichen mit doppelten Anführungszeichen versehen:

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