zoukankan      html  css  js  c++  java
  • Hive修改表名,列名,列注释,表注释,增加列,调整列顺序,属性名等操作

    Hive修改表名,列名,列注释,表注释,增加列,调整列顺序,属性名等操作

    Alter Table 语句

    Hive修改表名,列名,列注释,表注释,增加列,调整列顺序,属性名等操作

    它是在Hive中用来修改的表。
    语法
    声明接受任意属性,我们希望在一个表中修改以下语法。
    1.  
      ALTER TABLE name RENAME TO new_name
    2.  
      ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
    3.  
      ALTER TABLE name DROP [COLUMN] column_name
    4.  
      ALTER TABLE name CHANGE column_name new_name new_type
    5.  
      ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])

    (1)、重命名表

    Rename To… 语句

    ALTER TABLE table_name RENAME TO new_table_name;

    上面这个命令可以重命名表,数据所在的位置改变,但分区名都没有改变。

    下面是查询重命名表,把 employee 修改为 emp。
    ALTER TABLE employee RENAME TO emp;

    (2)、改变列名/类型/位置/注释

    1.  
      ALTER TABLE table_name CHANGE
    2.  
      [CLOUMN] col_old_name col_new_name column_type
    3.  
      [CONMMENT col_conmment]
    4.  
      [FIRST|AFTER column_name];

    这个命令可以修改表的列名,数据类型,列注释和列所在的位置顺序,FIRST将列放在第一列,AFTER col_name将列放在col_name后面一列,

    例子1:

    ALTER TABLE test_table CHANGE col1 col2 STRING COMMENT 'The datatype of col2 is STRING' AFTER col3;

    上面的语句将列名col2修改为col2,数据类型为STRING并添加注释,最后将这一列放在col3后面。

    例子2:下表包含employee表的字段,它显示的字段要被更改(粗体)。

    字段名从数据类型转换更改字段名称转换为数据类型
    eid int eid int
    name String ename String
    salary Float salary Double
    designation String designation String
    下面查询重命名使用上述数据的列名和列数据类型:
    1.  
      hive> ALTER TABLE employee CHANGE name ename String;
    2.  
      hive> ALTER TABLE employee CHANGE salary salary Double;
    (3)、增加/更新列

    ADD COLUMNS允许用户在当前列的末尾,分区列之前添加新的列,REPLACE COLUMNS允许用户更新列,更新的过程是先删除当前的列,然后在加入新的列。注:只有在使用native的SerDE时才可以这么做。

    ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [CONMMENT col_comment], ...);

    添加列语句,下面的查询增加了一个列名dept在employee表。

    hive> ALTER TABLE employee ADD COLUMNS (dept STRING COMMENT 'Department name');

    REPLACE语句

    以下从employee表中查询删除的所有列,并使用emp替换列:

    hive> ALTER TABLE employee REPLACE COLUMNS ( eid INT empid Int, ename STRING name String);

    (4)、增加表的属性

    ALTER TABLE table_name SET TBLPEOPERTIES table_properties;
    用户可以使用这个语句增加表属性,table_properties的结构为(property_name=property_value,property_name=property_value, ...),目前last_modified_time(最后修改时间),last_modified_user(做最后修改的用户)是由Hive自动管理的。用户可以向列中添加自己的属性,然后使用DISCRIBE EXTEBDED TABLE来获取这些信息。

    (5)、增加SerDE属性

    1.  
      ALTER TABLE table_name SET SERDE serde_class_name
    2.  
      [WHIT SERDEPROPERTIES serde_properties];
    ALTER TABLE table_name SET SERDEPROPERTIES serde_properties;

    上面两个命令都允许用户想SerDE对象增加用户定义的元数据。Hive为了序列化和反序列化数据,将会初始化SerDE属性,并将属性传给表的SerDE。这样用户可以为自定义的SerDe存储属性。上面serde_properties的结构为(property_name=property_value,property_name=property_value, ...)。

    (6)、修改表文件格式和组织

    1.  
      ALTER TABLE table_name SET FILEFORMAT file_format;
    2.  
      ALTER TABLE table_name CLUSTERED BY (col_name, col_name, ...)
    3.  
      [SORTED By (col_name, ...)] INTO num_buckets BUCKETS;

    上面两个命令都修改了表的物理属性。

    参考:https://blog.csdn.net/xiaolang85/article/details/21637827

     
    如有错误,恳求读者指出,发送到wu13213786609@outlook.com。
  • 相关阅读:
    WeX5开发指南
    移动web app开发框架
    [转]10款 Web 开发常备工具
    为兴趣求职:如何学习UI框架,请将你的看法观点写在评论下面
    10 个顶尖的 Linux 开源人工智能工具
    【转】编写Chrome扩展程序
    HDOJ 4455 Substrings 递推+树状数组
    iOS开发人员:事实上你还有非常多东西须要学
    鸡肋的JdbcRDD
    OFbiz实体引擎
  • 原文地址:https://www.cnblogs.com/WLCYSYS/p/14946430.html
Copyright © 2011-2022 走看看