Hive修改表語句


0x01:重命名表

1 ALTER TABLE table_name RENAME TO new_table_name;

上面這個命令可以重命名表,數據所在的位置和分區都沒有改變。

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

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
2 COMMENT 'The datatype of col2 is STRING'
3 AFTER col3;

上面的語句將列名col2修改為col2,數據類型為STRING並添加注釋,最后將這一列放在col3后面。

0x03:增加/更新列

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

ADD COLUMNS允許用戶在當前列的末尾,分區列之前添加新的列,REPLACE COLUMNS允許用戶更新列,更新的過程是先刪除當前的列,然后在加入新的列。注:只有在使用native的SerDE時才可以這么做。

0x04:增加表的屬性

1 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來獲取這些信息。

0x05:增加SerDE屬性

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

上面兩個命令都允許用戶想SerDE對象增加用戶定義的元數據。Hive為了序列化和反序列化數據,將會初始化SerDE屬性,並將屬性傳給表的SerDE。這樣用戶可以為自定義的SerDe存儲屬性。上面serde_properties的結構為(property_name=property_value,property_name=property_value, ...)。

0x06:修改表文件格式和組織

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM