Hive表的操作总结


目录

  • Hive表的操作总结
  • 一、建表语句
  • 二、创建表
  • 2.1创建管理表
  • 2.2创建外部表
  • 2.3内部表和外部表的相互转换
  • 三、常用命令


一、建表语句

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 表名 
 # [EXTERNAL]:创建外部表,如果不加该字段创建的是内部表(管理表)
 # [IF NOT EXISTS] :如果表不存在就创建该表,如果存在则不创建。不加该字段如果表存在则报错。
[(字段名 字段的类型 [COMMENT 字段的描述信息], ...)] 
[COMMENT 表的描述信息] 
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
 #PARTITIONED BY :对表创建分区
[CLUSTERED BY (col_name, col_name, ...) 
 #CLUSTERED BY :对表创建分桶
	[SORTED BY (col_name [ASC|DESC], ...)] INTO 分桶的数量 BUCKETS] 
	 #SORTED BY :对分桶表中的字段在插入数据时进行排序(一般不用)
[ROW FORMAT row_format]
	#各字段用什么分割开
	row format delimited fields terminated by ','
	#集合类型数据用什么分割开
	collection items terminated by '_'
	#map类型数据的K,V用什么分割开
	map keys terminated by ':'
	#每条数据用什么分割开(默认每条数据就是以\n分割)
	lines terminated by '\n';
[STORED AS file_format]
#文件的存储格式:默认格式是textFile(可以不写默认就是textFile格式)
[LOCATION hdfs_path]
#LOCATION :指定表存储的路径,如果不指定默认就是在所在的库的目录下。	
[TBLPROPERTIES (key=value, ...)]
#指定表的属性的内容。
[AS select_statement]
#基于查询的结果创建新表
[LIKE table_name]
#基于现有的表创建新表(没有内容)

二、创建表

create external table if not exists student(
id int comment 'this is id',
name string comment 'this is name'
)
comment 'this is first table'
row format delimited fields terminated by '\t'
stored as textfile
location '/student'
tblproperties('version'='1.0');

2.1创建管理表

create table managed_table(
id int,
name string
)
row format delimited fields terminated by '\t';

2.2创建外部表

create external table external_table(
	id int,
	name string
	)
	row format delimited fields terminated by '\t';

2.3内部表和外部表的相互转换

alter table 表名 set tblproperties('EXTERNAL'='TRUE/FALSE');

三、常用命令

1.查看所有的表

show tables;

2.查看表的字段的信息

desc 表名;

3.查看表的详细信息

desc formatted 表名;

4.查看创建表的语句(很少用)

show create table 表名;

5.修改表名称

alter table 表名 rename to 新表名;

6.修改列的名称或类型

ALTER TABLE 表名 CHANGE [COLUMN] 原字段名 新字段名 
		字段的类型 [COMMENT 字段的描述信息] [FIRST|AFTER column_name]

6.1 修改字段的名称

alter table 表名 change [COLUMN] 原字段名 新字段名 字段的类型 [COMMENT 字段的描述信息]

6.2 修改字段的类型 – 注意修改字段的类型(必须能够隐式转换)

alter table 表名 change [COLUMN] 字段名 字段名 字段的类型  [COMMENT 字段的描述信息]

6.3 修改某个字段的位置 –
注意:一旦字段的位置发生改变那么原位置上的数据类型和发生改变后的数据类型必须能够隐式转换,
否则会报错。

ALTER TABLE 表名 CHANGE [COLUMN] 原字段名 新字段名 
	字段的类型 [COMMENT 字段的描述信息] [FIRST|AFTER 字段名]

7.添加列

ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], ...)

8.替换列
–注意 :①替换的时候如果替换列的个数少于原列的个数会直接将没有替换的列给删除掉
②替换列的类型和原列的类型必须能够隐式转换否则会报错

ALTER TABLE table_name REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)

注:ADD是代表新增一字段,字段位置在所有列后面(partition列前),REPLACE则是表示替换表中所有字段,REPLACE使用的时候,字段的类型要跟之前的类型对应上,数量可以减少或者增加,其实就是包含了更新列,增加列,删除列的功能。

9.删除表

drop table 表名;

10.清空表 --注意:只能清空管理表

truncate table 表名;