2.Hive创建数据库

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'); // 大写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值