1.数据库操作
1.1 创建数据库
create database test comment 'Just for test' location '/abcd'
with dbproperties('aaa'='bbb');
comment后面指的是注释;location后面是数据库存放路径;dbproperties代表了数据库的属性
ps.避免要创建的数据库已经存在错误,增加if not exists判断:
create database if not exists db_hive;
1.2 查询数据库
1)显示数据库
show databases;
2) 过滤显示查询的数据库
show databases like db_hive;
3) 查看数据库信息
desc database db_hive;
4)查看更详细的数据库信息
desc database extended db_hive;
5) 切换数据库
use db_hive
1.3 修改数据库
例如:
alter database db_hive set dbproperties('createtime'='20170830');
1.4 删除数据库
1)删除空数据库
drop database db_hive;
2) 删除非空数据库
drop database db_hive cascade;
ps.cascade代表级联删除 (是一种强制删除,需要慎用)
2.数据表操作
2.1 创建数据表
普通表格(最常用)
create table student2(id int comment 'id', name string COMMENT 'nnnn')
COMMENT 'student2 shi wo'
row format delimited fields terminated by '\t' // 区分每行
collection items terminated by '_' //集合元素按下划线隔开
map keys terminated by ':' // kv按分号隔开
tblproperties('aaa'='bbb');
拷贝表格数据:
拷贝表格结构:
create table stu3 like student2
2.2 查询数据表
-- 查询表列表
show tables;
-- 查询表结构
desc student2;
-- 查询更详细的信息
desc formatted student2;
2.3 修改数据表
重命名表格
alter table student2 rename to stuxxx;
增加/修改/替换列信息(一般用不到)
alter table stuxxx
add columns (age int comment 'age');
alter table stuxxx
change column id idname bigint comment 'idxxx'; // 修改id那一列对应的属性
alter table stuxxx
replace columns (id string comment 'abc'); //比如说之前是三列,现在替换成一列了
2.3 删除表
-- 删除表
drop table stu;
-- 删除表但不删除数据
truncate table stu;
3. 数据操作
3.1 导入数据
从本地导入数据到表格(local)
load data local inpath '/opt/module/hive/datas/student.txt'
into table student;
从本地导入数据到表格并覆盖(local overwrite)
load data local inpath '/opt/module/hive/datas/student.txt'
overwrite into table student;
从集群导入数据到表格并覆盖
load data inpath '/datas/student.txt'
overwrite into table student;
3.2 插入数据
插入数据
insert into student2 values (1001, 'zhangsan'),(1002, 'lisi');
插入查询结果(最常用)
insert into student2
select id, name from student where id > 1002;
插入查询结果(覆盖)
insert overwrite table student2
select id, name from student where id > 1002;
ps.注意没有into
将查询结果直接建表
create table student3 as
select id, name from student;
3.3 内部表
ps.删除普通表格的时候,数据会跟着删除,而删除外部表的时候,数据不会删除
创建普通表格:
create table student (id int, name string)
row format delimited fields terminated by '\t';
创建外部表(external):
create external table stu_ex (id int, name string)
row format delimited fields terminated by '\t';
将内部表转换为外部表:
alter table stu_ex set tblproperties('EXTERNAL'='TRUE'); //kv都要大写
将表格改回管理表:
alter table stu_ex set tblproperties('EXTERNAL'='FALSE'); // 大写