Hive Alter表更改列名

use*_*621 24 hive alter-table alter

我想在Hive中重命名columnName.有没有办法在Hive中重命名列名.

tableA(column1,_c1,_c2)到tableA(column1,column2,column3)??

Rem*_*anu 70

更改列名称/类型/位置/注释:

ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]

例:

CREATE TABLE test_change (a int, b int, c int);

// will change column a's name to a1
ALTER TABLE test_change CHANGE a a1 INT;
Run Code Online (Sandbox Code Playgroud)

  • 重命名从查询中自动生成的列名时,例如OP中的_c1,_c1,您必须用反引号括起名称 (32认同)
  • 请注意,如果列更改是镶木桌,则不会更改任何基础数据.也就是说,如果表中已有数据,则重命名列不会使该列中的数据可以使用新名称访问:select from test_change; 1 alter table test_change改变a1 int; 从test_change中选择a1; 空值 (3认同)

小智 6

命令仅在"use"命令首次用于定义工作所在的数据库时才有效.使用DATABASE.TABLE重命名语法的表列会引发错误并且不起作用.版本:HIVE 0.12.

例:

hive> ALTER TABLE databasename.tablename CHANGE old_column_name new_column_name;

  MismatchedTokenException(49!=90)
        at org.antlr.runtime.BaseRecognizer.recoverFromMismatchedToken(BaseRecognizer.java:617)
        at org.antlr.runtime.BaseRecognizer.match(BaseRecognizer.java:115)
        at org.apache.hadoop.hive.ql.parse.HiveParser.alterStatementSuffixExchangePartition(HiveParser.java:11492)
        ...

hive> use databasename;

hive> ALTER TABLE tablename CHANGE old_column_name new_column_name;

OK
Run Code Online (Sandbox Code Playgroud)


min*_*s23 6

alter table table_name change old_col_name new_col_name new_col_type;
Run Code Online (Sandbox Code Playgroud)

这是例子

hive> alter table test change userVisit userVisit2 STRING;      
    OK
    Time taken: 0.26 seconds
    hive> describe test;                                      
    OK
    uservisit2              string                                      
    category                string                                      
    uuid                    string                                      
    Time taken: 0.213 seconds, Fetched: 3 row(s)
Run Code Online (Sandbox Code Playgroud)