代码之家  ›  专栏  ›  技术社区  ›  user2978621

配置单元更改表更改列名

  •  37
  • user2978621  · 技术社区  · 10 年前

    我正在尝试重命名Hive中的columnName。是否有方法在配置单元中重命名列名。

    表A(列1,_c1,_c2) 到 表A(第1列、第2列、第3列) ??

    4 回复  |  直到 6 年前
        1
  •  96
  •   Remus Rusanu    10 年前

    Change Column Name/Type/Position/Comment :

    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;
    
        2
  •  7
  •   Nishu Tayal    8 年前

    命令仅在“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
    
        3
  •  6
  •   minhas23    10 年前
    alter table table_name change old_col_name new_col_name new_col_type;
    

    以下是示例

    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)
    
        4
  •  2
  •   INDRAJITH EKANAYAKE    4 年前

    @libjack在评论中提到了一点非常重要。首先,我们可以通过 describe <table_name>; 命令 enter image description here

    有一个称为c1的双列,当我们将数据从一个表移动到另一个表时,这些列是由蜂巢本身创建的。要解决这些列,我们需要将其写入反引号中

    `_c1`
    

    最后,ALTER命令将是,

    ALTER TABLE <table_namr> CHANGE `<system_genarated_column_name>` <new_column_name> <data_type>;