Hive修改表

ALTER TABLE语句用于改变一个已经存在的表的结构,如:增加列和分区,改变SerDe,添加表和SerDe的属性或成命名表。

(1)重命名表

ALTER TABLE table_name RENAME TO new_table_name
该命令只是更改了表名字,数据所在的分区和位置并不会改变。表的旧名字并未被释放,对旧表的更改会改变新表的数据。

hive> CREATE TABLE test (a INT,b INT,c STRING);
OK

Time taken: 1.025 seconds


hive> ALTER TABLE test RENAME TO test_change;
OK

Time taken: 0.702 seconds


hive> show tables 'test_c*';
OK
test_change
Time taken: 0.082 seconds, Fetched: 1 row(s)

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

ALTER TABLE table_name CHANGE [colname]
col_old_name col_new_name col_type
[COMMENT col_comment]
[FIRST|AFTER col_name]

列的改变只会修改Hive的元数据,而不会改变实际的数据。要注意元数据定义和实际数据结构的一致性。

hive> ALTER TABLE test_change CHANGE a a_change STRING AFTER c;
OK

Time taken: 0.21 seconds


hive> describe test_change;
OK
b                       int                                         
c                       string                                      
a_change                string                                      
Time taken: 0.129 seconds, Fetched: 3 row(s)

(3)增加/更新列

ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment],...)
ADD COLUMNS允许在当前列之后,分区列之前添加新的列,REPLACE COLUMS删除当前的列,加入新的列。只有在使用native 的SerDe时才能这样做。

hive> ALTER TABLE test_change ADD COLUMNS (d INT COMMENT 'ADD new collumn');
OK

Time taken: 0.206 seconds


hive> describe test_change;
OK
b                       int                                         
c                       string                                      
a_change                string                                      
d                       int                     ADD new collumn     
Time taken: 0.123 seconds, Fetched: 4 row(s)

(4)增加表属性

ALTER TABLE table_name SET TBLPROPERTIES table_properties
table_properties::(properties_name=property_value,properties_name=property_value,...)


使用这个命令向表中增加元数据。


(5)改变表文件格式和组织

ALTER TABLE table_name SET FILEFORMAT new_fileformat
ALTER TABLE table_name CLUSTERED BY (col_name,col_name,...) [SORTED BY (col_name,...)] INTO number BUCKETS


本命令修改了表的物理存储属性。只是修改了元数据,不能重组或格式化现有的数据。

(6)删除表

DROP TABLE table_name





你可能感兴趣的:(Hbase-Hive-pig)