Amazon Athena CREATE EXTERNAL TABLE mismatched input 'external' invalidrequestexception

Viewed 21583

I am trying to create an external table in Amazon Athena. My query is the following:

CREATE EXTERNAL TABLE priceTable (
  WeekDay STRING,
  MonthDay INT,
  price00 FLOAT,
  price01 FLOAT,
  price02 FLOAT,
  price03 FLOAT,
  price04 FLOAT,
  price05 FLOAT,
  price06 FLOAT,
  price07 FLOAT,
  price08 FLOAT,
  price09 FLOAT,
  price10 FLOAT,
  price11 FLOAT,
  price12 FLOAT,
  price13 FLOAT,
  price14 FLOAT,
  price15 FLOAT,
  price16 FLOAT,
  price17 FLOAT,
  price18 FLOAT,
  price19 FLOAT,
  price20 FLOAT,
  price21 FLOAT,
  price22 FLOAT,
  price23 FLOAT,
  )

  ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ';'
  LINES TERMINATED BY '\n'
  LOCATION 's3://myquicksighttestbucket/C1_SphdemDD_CANARIAS_20190501_20190531_v2'

Where the file in S3 is just a csv deliminted by semicolons. However, I get the following error:

line 1:8: mismatched input 'external'. expecting: 'or', 'schema', 'table', 'view' (service: amazonathena; status code: 400; error code: invalidrequestexception; request id: e524f7e6-39ca-4af7-9e39-f86a4d0a36c8; proxy: null)

Can anybody tell what I am doing wrong? Any help is much appreciated.

5 Answers

Oooh! I am sorry, the error was the comma after the last field!!

And, also, instead of:

FIELDS TERMINATED BY ';'

I should have used the delimiter's OCT code (073) like this:

FIELDS TERMINATED BY '073'

I had invalid field names which included - chars. A rather easy mistake when copying names like flow-direction directly from flow logs definitions.

I had the same error today, and unlike others, I had a partitioned by clause where I didn't submit the type for the column:

CREATE EXTERNAL TABLE IF NOT EXISTS table_name(
  creationtime string,
  anumber bigint,
  somearray array<struct<...>>,
  somestring string)
  PARTITIONED BY (creation_date string)
                                ^^^^^^ <--- 'string' was missing
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
LOCATION
's3://location/';

Once I added the type, the error vanished and the query was successful.

Make sure table name does not have "-", spaces, or any other character not allowed in table names.

Lots of answers here already, but I just wanted to summarize and say it seems like any syntax error in the statement can cause this error.

In my case I had a trailing comma after the last item of my TBLPROPERTIES

Related