语法

ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])

Rename To… 语句


  • 对于内部表,除了更新表的元数据之外,还对表的目录名称进行修改。
  • 对于外部表,这个操作只更新元数据,但不会更改存放数据的目录名称。

ALTER TABLE oldTableName RENAME TO newTableName;

Change 语句

下表包含employee表的字段,它显示的字段要被更改。




Hive修改表属性_sql





下面查询重命名使用上述数据的列名和列数据类型:

ALTER TABLE employee CHANGE name ename String; 
ALTER TABLE employee CHANGE salary salary Double;

添加列语句

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

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

添加列到指定位置

-- 先添加列
alter table rpt_msg_data_daily add columns (ac_sendmsgnum bigint comment '发送misscall留言条数');

-- 再修改位置
alter table rpt_msg_data_daily change ac_sendmsgnum ac_sendmsgnum bigint after avg_len ;


REPLACE语句

这个操作其实是将原有的列删除,然后再添加新的指定的列。

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

备注:

ALTER TABLE  table_name  add columns( dept string COMMENT '') CASCADE;

加分区表字段需要加上CASCADE

创建一个Schema一样的新表-- Like

CREATE TABLE new_table LIKE existing_table;

hive表修改TBLPROPERTIES:

修改TBLPROPERTIES内的数据命令:

alter table table_name set TBLPROPERTIES ('EXTERNAL'='TRUE'); -- 内部表转外部表

alter table table_name set TBLPROPERTIES ('EXTERNAL'='FALSE'); -- 外部表转内部表

Hive 修改表注释:

ALTER TABLE xxx SET TBLPROPERTIES('comment' = 'XXX');