hive常用操作

1、数据库

1)创建数据库

 1 create database database_name; 

2)创建一个数据库并检查是否存在,不存在才创建

 1 create databases if not exists database_name; 

3)创建一个数据库,并加上注释

 1 create database if not exists database_name comment '这是创建数据库的备注'; 

4)创建数据库,指定数据库在HDFS上存放的位置

 1 create database if not exists database_name location '数据库存放路径:/mnt/database_name.db'; 

5)查看当前所用的数据库

 select current_database(); 

2、表

if not exists   :表示检查所创建的表或库是否存在,不存在才会创建

row format delimited fields terminated by ','    : 表示行以 ‘,’ 进行分割

partitioned by (data dtring)    :表示以时间进行分区

1)创建内部表

创建内部表,以 ',' 进行分割;

1 create table table_name(
2     id int,
3     name string,
4     age string
5 )
6 row format delimited fields terminated by ',';

根据查询结果创建表,会将查询的数据放入到新表;

 1 create table table_name1 as select id, name, age from table_name2; 

根据已经存在的表结构创建表,只是结构一样,新表无数据;

 1 create table table_name1 like table_name; 

2)创建外部表

1 create external table external_table_name(
2     id int,
3     name string,
4     age string
5 )
6 row format delimited
7 fields terminated by ',';

向外部表中导入数据

 1 load data local inpath '/home/table_data.txt' into table external_table_name; 

3)创建分区表

创建分区表

1 create external table exter_table_name(
2     id int,
3     name string
4 )
5 partitioned by (age string)    # (创建分区表)
6 row format delimited fields terminated by ','
7 location '/home/exter_table_name';    # (指定外部表的路径)

创建二级分区表

在city目录下出现data的二级目录

1 create external table exter_table_name(id int, name string)
2 partitioned by (city string, data string)
3 row format delimited fields terminated by ',';

建立分区表后,需要增加分区

1 alter table exter_table_name add pertition(age='20')
2 location '/home/exter_table_name_20';

通过where快速查询

 1 select * from exter_table_name where age=20; 

4)向表中插入数据

原表为分区表,从其他表中导入数据,不覆盖表中的元数据

insert into table database_name.table_name1
partition(create_date='1990-01-01') select id, name, age from database_name.table_name2 where id > 10;

原表为非分区表,从其他表中导入数据,覆盖表中的元数据

insert overwrite table database_name.table_name1select id, name, age
from database_name.table_name2
where id > 10;

从文件中向表批量插入数据

  load data local inpath '/root/data.txt' overwrite into table table_name;  

原文地址:https://www.cnblogs.com/gxfaxe/p/11631059.html