Hive 如何重命名自动命名列
我使用CTAS创建了一个表,现在它有了一个自动生成的名称(即,Hive 如何重命名自动命名列,hive,alter-table,Hive,Alter Table,我使用CTAS创建了一个表,现在它有了一个自动生成的名称(即,\u c0)。我无法使用经典的ALTER TABLE CHANGE\u c0 new\u name字符串对其进行重命名。我该如何重命名它 表格创建: CREATE TABLE my_table AS SELECT my_udf(col_1) FROM other_table ; my\u表现在包含一列:\u c0 尝试更改列名: ALTER TABLE my_table CHANGE _c0 my_col STRING; 这导致:
\u c0
)。我无法使用经典的ALTER TABLE CHANGE\u c0 new\u name字符串
对其进行重命名。我该如何重命名它
表格创建:
CREATE TABLE my_table AS
SELECT my_udf(col_1)
FROM other_table
;
my\u表
现在包含一列:\u 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
关键在于正确地转义
\u c0
:
ALTER TABLE my_table CHANGE `_c0` my_col STRING;
这是正确的配置单元将以
\u c
开头的名称视为内部名称,用户无法直接访问这些名称。当您运行解释一些查询时,您将看到用法\u col0
或类似内容
一种解决方法是用反引号将列名括起来。或者只为使用CTA创建的每个列指定一个有效别名,这样就不需要alter
CREATE TABLE my_table AS
SELECT my_udf(col_1) AS my_col
FROM other_table
;