如何重命名自动命名列

zbq4xfa0  于 2021-06-25  发布在  Hive
关注(0)|答案(2)|浏览(547)

我使用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

lc8prwob

lc8prwob1#

hive处理以 _c 作为内部名称,用户不能直接访问。当你跑的时候 explain some_query ,您将看到用法 _col0 或类似的东西。
一种解决方法是用反引号将列名括起来。或者只为用cta创建的每一列指定一个有效的别名,这样 alter 是需要的。

CREATE TABLE my_table AS
SELECT my_udf(col_1) AS my_col
FROM other_table
;
gdx19jrr

gdx19jrr2#

关键在于逃跑 _c0 正确地:

ALTER TABLE my_table CHANGE `_c0` my_col STRING;

这是正确的

相关问题