我使用CTA创建了一个表,现在它有了一个自动生成的名称(即, _c0
). 我无法用经典的 ALTER TABLE <name> CHANGE _c0 new_name STRING
. 我该如何重命名它?
表创建:
CREATE TABLE my_table AS
SELECT my_udf(col_1)
FROM other_table
;
``` `my_table` 现在包含一列: `_c0` .
尝试更改列名:
ALTER TABLE my_table CHANGE _c0 my_col STRING;
这将导致:
Error while compiling statement: FAILED: ParseException line 1:71 cannot recognize input near '_c0' 'my_col' 'STRING' in rename column name
2条答案
按热度按时间lc8prwob1#
hive处理以
_c
作为内部名称,用户不能直接访问。当你跑的时候explain some_query
,您将看到用法_col0
或类似的东西。一种解决方法是用反引号将列名括起来。或者只为用cta创建的每一列指定一个有效的别名,这样
alter
是需要的。gdx19jrr2#
关键在于逃跑
_c0
正确地:这是正确的