【轉】Hive 修改 table、column


1、重命名表重命名表的語句如下:

ALTER TABLE table_name RENAME TO new_table_name 

 

2、修改表屬性:

ALTER TABLE table_name SET TBLPROPERTIES (property_name = property_value, property_name = property_value,... ) 

 

3、修改表注釋:

ALTER TABLE table_name SET TBLPROPERTIES('comment' = new_comment);  

 

1、添加列

-- Add/Replace Columns 語法
ALTER TABLE table_name ADD|REPLACE
  COLUMNS (col_name data_type [COMMENT col_comment], ...)

--【注】ADD COLUMNS 允許用戶在當前列的末尾增加新的列,但是在分區列之前。

-- 將 a 列的名字改為 a1,a 列的數據類型改為 string,並將它放置在列 b 之后。
ALTER TABLE test_change CHANGE a a1 STRING AFTER b;

-- 將 b 列的名字修改為 b1, 並將它放在第一列。
ALTER TABLE test_change CHANGE b b1 INT FIRST

注意:對列的改變只會修改Hive的元數據,而不會改變實際數據。用戶應該確定保證元數據定義和實際數據結構的一致性。

 

2、修改列 

--- Change Column Name/Type/Position/Comment 語法
ALTER TABLE table_name CHANGE [COLUMN]
  col_old_name col_new_name column_type
    [COMMENT col_comment]
    [FIRST|AFTER column_name]

--- Change Column Name/Type/Position/Comment 案例
CREATE TABLE test_change (a int, b int, c int);
ALTER TABLE test_change CHANGE a a1 INT; --將 a 列的名字改為 a1.

--將 a 列的名字改為 a1,a 列的數據類型改為 string,並將它放置在列 b 之后。新的表結構為: b int, a1 string, c int.
ALTER TABLE test_change CHANGE a a1 STRING AFTER b; 

--將 b 列的名字修改為 b1, 並將它放在第一列。新表的結構為: b1 int, a string, c int.
ALTER TABLE test_change CHANGE b b1 INT FIRST; 

 

分區

1、增加分區

--Add Partitions 語法
ALTER TABLE table_name ADD
  partition_spec [ LOCATION 'location1' ]
  partition_spec [ LOCATION 'location2' ] ...

partition_spec:
  : PARTITION (partition_col = partition_col_value,
        partition_col = partiton_col_value, ...)

--Add Partitions 語法案例:用戶可以用 ALTER TABLE ADD PARTITION 來向一個表中增加分區。當分區名是字符串時加引號。

  ALTER TABLE page_view ADD
    PARTITION (dt='2008-08-08', country='us')
      location '/path/to/us/part080808'
    PARTITION (dt='2008-08-09', country='us')
      location '/path/to/us/part080809';

 

2、刪除分區

---DROP PARTITION 刪除分區
ALTER TABLE table_name DROP
    partition_spec, partition_spec,...

 

Reference:

https://www.jianshu.com/p/9088fe002e2a    Hive 修改table、column

 


免責聲明!

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



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