一、Hive表增加字段語句
在Hive中,可以通過Alter Table語句來為已經創建的表添加新的字段。Alter Table語句可以給表增加、修改、刪除列,還可以修改列的數據類型、順序和默認值等信息。下面是Hive表增加字段的語法:
ALTER TABLE table_name
ADD COLUMNS (col_name data_type [COMMENT col_comment], ... )
其中,table_name表示要增加字段的表名;col_name表示要增加的新列的名稱;data_type表示新列的數據類型,[COMMENT col_comment]可以用于指定列的注釋。
例如,我們現在有一張student表,要向這張表中增加一個名為sex的列,數據類型為string:
ALTER TABLE student
ADD COLUMNS (sex string);
二、Hive表增加一個字段
如果要在Hive表中新增一個字段,可以使用以下的語法格式:
ALTER TABLE table_name ADD COLUMN col_name data_type [COMMENT col_comment] [AFTER column_name];
其中,table_name為表名,col_name為要增加的字段名,data_type為字段的數據類型,COMMENT col_comment為字段的注釋信息,AFTER column_name為新字段要放在那個字段后面的位置。如果沒有指定AFTER column_name,則新字段會放在表結構的最后面。
例如,給student表增加一個name_en字段,數據類型為String,位置放在sex字段后面,語句如下:
ALTER TABLE student
ADD COLUMN name_en string COMMENT '英文名' AFTER sex;
三、Hive表增加字段的同時賦值
有時候在給Hive表增加字段的同時,需要為新的字段指定默認值。Hive可以通過以下語法來為新添加的字段賦值:
ALTER TABLE table_name ADD column_name column_type DEFAULT value;
其中,table_name為表名,column_name為新增的列的列名,column_type為列的類型,默認值的value。
例如,給employee表新添加一個salary字段,并給所有記錄賦默認值10000元,語句如下:
ALTER TABLE employee ADD salary int DEFAULT 10000;
四、Hive分區表增加字段
對于Hive分區表的操作和普通表一樣,唯一不同的就是,在給分區表增加字段時,需要在Alter Table語句中指定分區的位置,具體語法如下:
ALTER TABLE table_name PARTITION (partition_col = partition_val)
ADD COLUMNS (col_name data_type [COMMENT col_comment], ... )
其中,partition_col表示要增加字段的分區列,partition_val為分區列的值,table_name為表名,col_name表示要增加的新列的名稱;data_type表示新列的數據類型,[COMMENT col_comment]可以用于指定列的注釋。
例如,對student分區表,在分區field=‘eng’的基礎上增加一個名為grade的列,語句如下:
ALTER TABLE student
PARTITION (field = 'eng')
ADD COLUMNS (grade int);
五、Hive表添加字段
如果要在Hive表中添加一列,可以使用Add Columns來實現,其語法如下:
ALTER TABLE table_name ADD COLUMNS (column_name data_type [COMMENT col_comment], ...);
其中,table_name為要添加列的表名,column_name為要添加的列名,data_type為要添加的列的數據類型,COMMENT col_comment為要添加的列的備注信息。
例如,在student表中增加一個列blog,其數據類型為String,備注為“博客地址”,語句如下:
ALTER TABLE student ADD COLUMNS (blog string COMMENT '博客地址');
六、Hive外部表增加字段
對于Hive外部表的操作和普通表一樣,唯一不同的就是,在給外部表增加字段時,需要指定EXTERNAL關鍵字,具體語法如下:
ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], ... )
[AS FILEFORMAT file_format]
[LOCATION hdfs_path]
其中,table_name為表名,col_name表示要增加的新列的名稱;data_type表示新列的數據類型,[COMMENT col_comment]可以用于指定列的注釋;AS FILEFORMAT用于指定外部表的格式;LOCATION hdfs_path用于指定外部表的存儲位置。
例如,給名為log的外部表添加一個msg字段,類型為String,語句如下:
ALTER TABLE log ADD COLUMNS (msg string) LOCATION '/user/hive/log';
七、Hive修改字段長度
如果需要修改Hive表中某列字段的長度,可以使用Modify Column語句來實現。具體語法如下:
ALTER TABLE table_name CHANGE col_name col_name data_type (length) [COMMENT col_comment] [FIRST | AFTER column_name];
其中,table_name為表名,col_name為要修改的列名,data_type為要修改列的數據類型,(length)為要修改列的長度,COMMENT col_comment為要修改的列的備注信息,FIRST為指定字段修改后,應該排在第一個,AFTER column_name指定該字段排在某個字段后面。
例如,我們需要將student表中已有的name字段長度從20改為30,語句如下:
ALTER TABLE student CHANGE name name VARCHAR(30);
八、Hive修改表字段名稱
如果需要修改Hive表中某一列的名稱,可以使用Change Column Name語句來實現。具體語法如下:
ALTER TABLE table_name CHANGE old_col_name new_col_name column_type [COMMENT col_comment] [FIRST | AFTER column_name];
其中,table_name為表名,old_col_name為原來的列名,new_col_name為修改后的列名,column_type為列的數據類型,COMMENT col_comment為列的注釋信息,FIRST為指定字段修改后,應該排在第一個,AFTER column_name指定該字段排在某個字段后面。
例如,我們需要將student表中已有的name字段名稱從name改為name_cn,語句如下:
ALTER TABLE student CHANGE name name_cn string;
總結
在Hive中,對于表的結構,可以通過Alter Table語句來進行修改。在增加字段時,可以修改普通表的結構,也可以修改分區表的結構。同時還可以指定默認值和修改字段的長度和名稱等操作,方便靈活地滿足不同場景下的需求。