我正在尝试使用以下命令在 AWS Athena 中创建一个表。但是我收到错误:输入“外部”不匹配。预期:“OR”、“SCHEMA”、“TABLE”、“VIEW”
你能帮忙吗?
CREATE EXTERNAL TABLE IF NOT EXISTS 'transport_evaluator_prod' (
`messageId` STRING,
`type` STRING,
`causationId` STRING,
`correlationId` STRING,
`traceparent` STRING,
`data` STRUCT<
`evaluationOccurred`:STRING,
`eta`:STRUCT<
`distance`:INT,
`timeToDestination`:INT,
`eta`:STRING,
`destination`:STRUCT<
`latitude`:DOUBLE,
`longitude`:DOUBLE,
`altitude`:DOUBLE>,
`destinationEventId`:STRING,
`origin`:STRUCT<
`latitude`:DOUBLE,
`longitude`:DOUBLE,
`altitude`:DOUBLE>,
`originEventId`:STRING,
`plannedArrival`:STRING,
`locationActionReference`:STRING,
`resourceUrn`:STRING,
`eventProvider`:STRING,
`occured`:STRING,
`position`:STRUCT<
`latitude`:DOUBLE,
`longitude`:DOUBLE,
`altitude`:DOUBLE>,
`equipmentNumber`:STRING,
`received`:STRING>>)
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
LOCATION
'for-security-pointing-to-folder'
尝试删除表名中的引号:
CREATE EXTERNAL TABLE IF NOT EXISTS transport_evaluator_prod (
`messageId` STRING,
`type` STRING,
...
我提供我所做的更改,以便使其能够为下一个人可能遇到类似问题的人工作
我也遇到过同样的问题,但就我而言,问题出在我的数据库名称上。当我输入正确的名称时,查询就会起作用。
类似:
CREATE EXTERNAL TABLE IF NOT EXISTS 'correct_db_name'.'transport_evaluator_prod'
...
这只是一条错误的错误消息,表明查询中某处存在问题,导致失败,但没有生成更具体的消息。就像您必须调试一个查询一样,通过简化查询直到它通过,然后一次添加一行,直到您看到哪一行导致了问题。
当我的表名称包含
-
字符时(我使用存储桶名称作为表名称的一部分),我收到此错误消息。当我将它们替换为 _
字符时,表格创建得很好。