1、创建表
create table emp( id int, name string, gender string )
2、创建表写入想要存放的位置
create table emp( id int, name string, gender string ) location '/usr/data/hive/emp'
3、创建表指定分隔符,默认是制表符('\t')
create table emp( id int, name string, gender string ) //用逗号作为分隔符(',') row format delimited fields terminated by ','
4、快速复制表
create table emp_copy as select * from emp; create table emp_copy //用逗号作为分隔符(',') row format delimited fields terminated by ',' as select * from emp;
5、增加表列
alter table emp add columns(class string)
6、删除表 如果开启了回收机制,删除后会移动到里面,然后定期删除
drop table emp
7、创建分区表
1)内部表:Partition对应于数据库的partition列的密集索引,在hive中表中的一个partition对应于表下的一个目录,所有的partition的数据都存储在对应的目录中;
explain可以查询执行效率是否提升,执行过程从下往上,从右往左
insert into table emp_table partition(gender = 'M') select id, name from emp where gender = 'M'; insert into table emp_table partition(gender = 'F') select id, name from emp where gender = 'F';
2)外部表(External Table):指向已经在HDFS中存在的数据,可以创建partition,外部表只有一个过程,加载数据和创建表时同时完成,并不会移动到数据库目录中,
只是与外部数据建立一个链接。当删除一个外部表时,仅删除该链接
external table emp( id int, name string, gender string ) //用逗号作为分隔符(',') row format delimited fields terminated by ',' //指定数据存放位置 location '/usr/data/hive/emp'
3)不同点:外部表和内部表在元数据组织上是相同的,而实际数据的存储则有较大的差异
4)桶表(Bucket Table)
桶表是对数据进行哈希取值,然后放到不同文件中存储
create table emp( id int, name string, gender string ) //根据name字段进行放置5个桶 clustered by(name) into 5 buckets;
5)视图(View)
视图是一种虚表,是一个逻辑概念;可以跨越多张表,视图简历在已有的表的基础上,视图赖以建立的这些表称谓基表,
视图可以简化复杂的查询
//emp、dept两个表为基表,由视图展示出来---只能做展示 create view empInfo as select e.id, e.name, e.gender, dept.age from emp e, dept d where e.id = dept.id