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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章