Hive修改表語句

2021-06-21 02:38:58 字數 2697 閱讀 4941

0x01:重新命名表

1altertabletable_name renametonew_table_name;

上面這個命令可以重新命名表,資料所在的位置和分割槽都沒有改變。

0x02:改變列名/型別/位置/注釋

1altertabletable_name change

2[cloumn] col_old_name col_new_name column_type

3[conmment col_conmment]

4[first|aftercolumn_name];

這個命令可以修改表的列名,資料型別,列注釋和列所在的位置,first將列放在第一列,after col_name將列放在col_name後面一列,例如:

1altertabletest_table change col1 col2 string

2comment'the datatype of col2 is string'

3aftercol3;

上面的語句將列名col2修改為col2,資料型別為string並新增注釋,最後將這一列放在col3後面。

0x03:增加/更新列

1altertabletable_nameadd|replacecolumns (col_name data_type [conmment col_comment], ...);

add columns允許使用者在當前列的末尾,分割槽列之前新增新的列,replace columns允許使用者更新列,更新的過程是先刪除當前的列,然後在加入新的列。注:只有在使用native的serde時才可以這麼做。

0x04:增加表的屬性

1altertabletable_namesettblpeoperties table_properties;

使用者可以使用這個語句增加表屬性,table_properties的結構為(property_name=property_value,property_name=property_value, ...

),目前last_modified_time(最後修改時間),last_modified_user(做最後修改的使用者)是由hive自動管理的。使用者可以向列中新增自己的屬性,然後使用discribe extebded table來獲取這些資訊。

0x05:增加serde屬性

1altertabletable_namesetserde serde_class_name

2[whit serdeproperties serde_properties];

1altertabletable_namesetserdeproperties serde_properties;

上面兩個命令都允許使用者想serde物件增加使用者定義的元資料。hive為了序列化和反序列化資料,將會初始化serde屬性,並將屬性傳給表的serde。這樣使用者可以為自定義的serde儲存屬性。上面serde_properties的結構為(property_name=property_value,property_name=property_value, ...)。

0x06:修改表檔案格式和組織

1altertabletable_namesetfileformat file_format;

1altertabletable_name clusteredby(col_name, col_name, ...)

2[sortedby(col_name, ...)]intonum_buckets buckets;

上面兩個命令都修改了表的物理屬性。

Hive修改表語句

0x01 重新命名表 1altertabletable name renametonew table name 上面這個命令可以重新命名表,資料所在的位置和分割槽都沒有改變。0x02 改變列名 型別 位置 注釋 1altertabletable name change 2 cloumn col ol...

Hive修改表語句

0x01 重新命名表 alter table table name rename to new table name 上面這個命令可以重新命名表,資料所在的位置和分割槽都沒有改變。0x02 改變列名 型別 位置 注釋 cloumn col old name col new name column t...

hive建表語句

1 只保留表的結構 create table table1 as select from table2 where 2 3 2 保留結構與資料 create table table1 as select from table 2 3 重新命名 create table table1 column1 ...