雅典娜插入新的值错误:多余的输入'INSERT'期望{'',',','SELECT','VALUES','TABLE'}

问题描述

user_db模式如下:

  2020-03  11         80     121
  2020-04  20         30     121
  2020-05  13         99     121
  2020-06  12         19     121
......    

用户数据库就像:

month,user_count,total,grand_total,percentage_old,total_percentage_old
....
2020-06    20       30      121       73.3%           18.1%


需要从Athena查询中更新值百分比,来自六月的旧数据库的百分比total_percentage和较旧的数据记录,total_percentage_old,

with user_db as (
select *,user_count/total*100 as percentage,user_count/grand_total*100 as total_percentage
)

INSERT INTO  user_db (percentage,total_percentage) 
select percentage_old,total_percentage_old
from old_user_db  as u
where u.month = '2020-06'  

但出现此错误

外部输入'INSERT'期望{'(',',','SELECT','VALUES, 'TABLE'}

需要保留with子句以便在其他查询中重复使用。 期望使用旧的用户数据库值获得具有六月百分比和total_percentage的user_db表。

解决方法

我不认为这是导致错误的原因,因为该错误是语法错误,但是您正试图插入CTE中,但这仍然无法正常工作。

WITH user_db (…)定义仅在查询执行期间存在的临时关系user_db。如果您已经有一个名为user_db的表,则此关系将对其进行遮盖。 INSERT INTO user_db无法插入该关系,因为它实际上并不存在。

user_db关系也没有受支持的FROM子句,Athena将不知道user_counttotal和{{ 1}}列来自。

我不知道是否可以在其他数据库中编写这样的插入语句,我从未见过。无论哪种方式,雅典娜都不支持。如果您想进一步了解受支持的内容,请查看INSERT INTO文档。

我怀疑您正在尝试执行类似操作,但是我不确定:

grand_total

如果您需要更多详细的帮助,则必须提供更多信息。