我正在尝试使用下面的查询创建表。如果我不创建表,而只是运行 SELECT * 中的部分,则可以运行查询。
(SELECT *
FROM "MyDatabase"."2007" A
WHERE A."column name a" NOT IN ('U','A+','A','A-')
AND A."column name b" NOT IN ('SHH','CTP')
AND NOT EXISTS
(SELECT *
FROM "MyDatabase"."2008" B
WHERE (B."column name a" = A."column name a"
AND B."column name b" = A."column name b"
AND B."column name c" = A."column name c")))
Run Code Online (Sandbox Code Playgroud)
错误消息为“GENERIC_INTERNAL_ERROR:字段以 ';' 结尾:预期为 ';' 但在第 1 行得到了“partOfAcolName”:...”
从谷歌搜索来看,列名中的空格似乎是问题所在。但我不确定。我的列名称中有空格。Glue Crawler 自动检测列名称。所以我不确定我是否能对此做些什么。我有大约 20 列,但中间都有空间。有人可以建议修复吗?谢谢。
当您执行 CREATE TABLE AS...时,您告诉 Athena 在 SELECT 中创建一个具有相同列名的表,但在这种情况下,这些列名包含空格,并且 Athena 不允许您创建具有以下名称的列名:空间。为了避免这种情况,您可以创建具有符合 Athena 规范的列名称的表,然后使用 INSERT INTO SELECT...FROM 填充该表