英文:
A query that runs by itself in Amazon Athena fails to run when I add CREATE TABLE temp_table_name AS on top of it due to a GENERIC_INTERNAL_ERROR
问题
When I run the query below in Amazon Athena, it runs without any problems or error messages:
SELECT
"loc id", "runway id", "icao id", "length", "width", "surface type condition", "edge light intensity"
FROM
"runway_db_athena"."runway"
WHERE
"loc id" IN ('09J','14A','18A','1V6','22S','2I0','2R4');
However, when I try to create a temporary session table with the same query, I encounter this error message:
GENERIC_INTERNAL_ERROR: field ended by ';': expected ';' but got 'id' at line 1: optional binary loc id. You may need to manually clean the data at location 's3://realagnifuegos3bucket/Athena-output/create%20dash_runs_table/2023/04/16/tables/230fe35a-e3fc-4b4c-aa46-b6c88efbd8f3' before retrying. Athena will not delete data in your account.
Subsequently, I attempted to add a semicolon after "loc id," which resulted in this error:
Only one sql statement is allowed. Got: CREATE TABLE dash_runs_table AS SELECT "loc id"; "runway id", "icao id",...
I expected to receive this error, but it confuses me because it asks for a semicolon and then complains when I provide one.
英文:
When I run the query (I have reduced the column names and airport codes in the query to reduce your scrolling time) below in Amazon Athena it runs and I get no problems or error messages:
SELECT
"loc id", "runway id", "icao id", "length", "width", "surface type condition", "edge light intensity"
FROM
"runway_db_athena"."runway"
WHERE
"loc id" IN ('09J','14A','18A','1V6','22S','2I0','2R4');
However, whenever I then try to store this result as a temporary session table so I can perform joins on it with other queries and only have to download the results of those joins using this:
CREATE TABLE dash_runs_table AS
SELECT
"loc id", "runway id", "icao id", "length", "width", "surface type condition", "edge light intensity"
FROM
"runway_db_athena"."runway"
WHERE
"loc id" IN ('09J','14A','18A','1V6','22S','2I0','2R4');
I end up with this:
GENERIC_INTERNAL_ERROR: field ended by ';': expected ';' but got 'id' at line 1: optional binary loc id. You may need to manually clean the data at location 's3://realagnifuegos3bucket/Athena-output/create%20dash_runs_table/2023/04/16/tables/230fe35a-e3fc-4b4c-aa46-b6c88efbd8f3' before retrying. Athena will not delete data in your account.
This query ran against the "runway_db_athena" database, unless qualified by the query. Please post the error message on our forum or contact customer support with Query Id: 230fe35a-e3fc-4b4c-aa46-b6c88efbd8f3
I have absolutely no idea what's going on there^^, I am still quite new to AWS. So, I went back and changed that first , after "loc id" to a ; just to see what would happen and this is the Error Message I got back this:
Only one sql statement is allowed. Got: CREATE TABLE dash_runs_table AS SELECT "loc id"; "runway id", "icao id",...
That^ is exactly what I was expecting to get, but not what I was hoping to get because that means I REALLY don't understand the error message! How is it expecting a semicolon, but then it complains when I give it one?
答案1
得分: 1
Amazon Athena似乎在“loc id”中的空格后面感到困惑。
由于它在使用“SELECT”时正常工作,但在使用“CREATE TABLE AS”时存在问题,因此它可能不喜欢创建具有名称中包含空格的表列的请求。
尝试使用别名重命名列:
CREATE TABLE dash_runs_table AS
SELECT
"loc id" as loc_id,
"runway id" as runway_id,
"icao id" as icao_id,
"length",
"width",
"surface type condition" as surface_type_condition,
"edge light intensity" as edge_light_intensity
FROM
"runway_db_athena"."runway"
WHERE
"loc id" IN ('09J','14A','18A','1V6','22S','2I0','2R4');
英文:
It would appear that Amazon Athena is being confused by the space after loc
in "loc id"
.
Since it works fine with the SELECT
, but has problems with CREATE TABLE AS
, it is likely unhappy with the request to create a table column that has a space in its name.
Try renaming the columns by using an alias:
CREATE TABLE dash_runs_table AS
SELECT
"loc id" as loc_id,
"runway id" as runway_id,
"icao id" as icao_id,
"length",
"width",
"surface type condition" as surface_type_condition,
"edge light intensity" as edge_light_intensity
FROM
"runway_db_athena"."runway"
WHERE
"loc id" IN ('09J','14A','18A','1V6','22S','2I0','2R4');
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论