一、Hive增加字段的SQL语句
在Hive中,要向表中增加一个字段,首先要用ALTER TABLE语句,它的通用语法如下:
ALTER TABLE table_name ADD
[COLUMN] column_name data_type
[COMMENT 'column_comment']
[FIRST | AFTER column_name]
其中:
- ADD COLUMN column_name data_type:指定要新增的列名和数据类型;
- COMMENT 'column_comment':可选,可以为新增的列添加注释;
- FIRST | AFTER column_name:可选,指定新增的列的位置,FIRST表示将列添加为表的第一行,AFTER column_name表示将列添加在指定列的后面。
举个例子,下面的代码演示了如何向表student_info中新增一列phone:
ALTER TABLE student_info ADD COLUMN phone STRING COMMENT '电话号码' AFTER name;
以上代码中,我们向student_info表中新增了一列phone,此列的数据类型为STRING,列注释为‘电话号码’,并且被添加到表的name列后面。
二、Hive增加字段并赋默认值
如果在新增字段时,想要为其设置一个默认值,可以使用以下语法:
ALTER TABLE table_name ADD
[COLUMN] column_name data_type
[COMMENT 'column_comment']
[FIRST | AFTER column_name]
[DEFAULT default_value];
其中,[DEFAULT default_value]表示在新增列的同时为其设置默认值。例如:
ALTER TABLE student_info ADD COLUMN address STRING COMMENT '家庭住址' AFTER name DEFAULT 'No data';
以上代码中,我们向student_info表中新增了一列address,并将它的默认值设为‘No data’。如果在执行该语句之前,表中已有数据,则新增的列address在这些数据中的默认值为‘No data’。
三、Hive增加字段语句
除了通过ALTER TABLE语句新增字段,还可以使用Hive的CREATE TABLE语句来创建表,并在其中指定需要的字段。CREATE TABLE语句的通用语法如下:
CREATE TABLE table_name (
column_name data_type [COMMENT 'column_comment'],
...
) [partitioned by (col_name data_type, ...)]
[CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)]
其中,column_name data_type [COMMENT 'column_comment']表示需要的列名、数据类型以及注释,每个字段之间使用逗号分隔。如果表需要使用分区,可以在CREATE TABLE语句中使用partitioned by子句来指定分区字段;如果要对表进行排序和聚集,则可以使用CLUSTERED BY和SORTED BY子句;如果需要指定文件格式或位置,则可以使用STORED AS和LOCATION子句。
举个例子,下面的代码演示了如何使用CREATE TABLE语句来创建一个student_info表,并在其中指定需要的字段:
CREATE TABLE student_info (
id INT COMMENT '学号',
name STRING COMMENT '姓名',
age INT COMMENT '年龄',
gender STRING COMMENT '性别',
phone STRING COMMENT '电话号码',
address STRING COMMENT '家庭住址'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;
以上代码中,我们使用了CREATE TABLE语句来创建了一个student_info表,并指定了6个字段,分别为:id、name、age、gender、phone、address,它们的数据类型分别为INT、STRING、INT、STRING、STRING、STRING,并且都附带了注释。ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'和STORED AS TEXTFILE是对表的格式和存储进行了声明,代表着将表以文本文件的形式存储在HDFS上。
四、Hive增加字段指定位置
如果在新增字段时想要指定该字段在表中的位置,可以使用AFTER关键字。例如下面的代码演示了如何新增一列grade_age,并将它添加在表的第一个位置:
ALTER TABLE student_info ADD COLUMN grade_age INT COMMENT '年级' FIRST;
五、Hive增加字段指定默认值
如果需要在新增字段时为其指定默认值,只需要在ALTER TABLE语句中增加DEFAULT关键字,后面跟着默认值即可。例如下面的代码演示了如何向表student_info中新增一列hobby,并将它的默认值设为'No data':
ALTER TABLE student_info ADD COLUMN hobby STRING COMMENT '爱好' AFTER gender DEFAULT 'No data';
六、Hive删除字段
要在Hive中删除一个字段,可以使用ALTER TABLE语句,通用语法如下:
ALTER TABLE table_name DROP [COLUMN] column_name;
其中,DROP [COLUMN] column_name指定要删除的列名。
例如,下面的代码演示了如何使用ALTER TABLE语句删除表student_info中的address列:
ALTER TABLE student_info DROP COLUMN address;
以上代码中,我们使用ALTER TABLE语句删除了student_info表中的address列。
七、Hive给表添加一个字段
向Hive中已有的表添加一个字段,可以使用ALTER TABLE语句,并在语句中使用ADD COLUMN子句指定新增的列的信息。例如,下面的代码演示了如何向student_info表中添加一列email:
ALTER TABLE student_info ADD COLUMN email STRING COMMENT '邮箱' AFTER phone DEFAULT 'No data';
以上代码中,我们向student_info表中添加了email列,它的数据类型为STRING,注释为‘邮箱’,在表格中的位置在phone之后,且默认值为‘No data’。
八、Hive修改表结构字段长度
若要修改Hive中表的结构,例如字段长度,需要使用ALTER TABLE语句。在语句中使用MODIFY COLUMN子句指定要修改的列名和新的数据类型即可。例如,下面的代码演示了如何将student_info表中的电话号码列长度改为15:
ALTER TABLE student_info MODIFY COLUMN phone STRING(15);
以上代码中,我们使用修改语句将student_info表中的phone列的数据类型改为了STRING(15),表示phone列的长度限制为15个字符。
九、Hive增加字段时可以指定默认值吗
在Hive中,对于新增字段,可以通过DEFAULT关键字来为其设置默认值。例如使用ALTER TABLE语句向表student_info中新增一列hobby,并为其指定默认值为‘No data’,示例如下:
ALTER TABLE student_info ADD COLUMN hobby STRING COMMENT ‘爱好’ AFTER gender DEFAULT 'No data';
以上代码中,我们向student_info表中新增了一列hobby,并为其设置默认值为‘No data’。
总结
本文详细介绍了Hive中增加字段的使用方法,包括使用ALTER TABLE语句和CREATE TABLE语句进行表结构修改、指定字段默认值、指定字段位置以及删除字段。虽然本篇文章只针对Hive的增加字段进行了阐述,但是对于理解其他增删改查语句也会有所帮助。