Hive DDL and DML
Hive定义了一套自己的SQL,简称HQL,它与关系型数据库的SQL略有不同,但支持了绝大多数的语句如DDL、DML以及常见的聚合函数、连接查询、条件查询。
DDL操作(数据定义语言)包括:Create、Alter、Show、Drop等。
(1)create database- 创建新数据库
(2)alter database - 修改数据库
(3)drop database - 删除数据库
(4)create table - 创建新表
(5)alter table - 变更(改变)数据库表
(6)drop table - 删除表
(7)create index - 创建索引(搜索键)
(8)drop index - 删除索引
(9)show table - 查看表
DML操作(数据操作语言)包括:Load 、Insert、Update、Delete、Merge。
(1)load data - 加载数据
(2)insert into - 插入数据
insert overwrite - 覆盖数据(insert … values从Hive 0.14开始可用。)
(3)update table - 更新表(update在Hive 0.14开始可用,并且只能在支持ACID的表上执行)
(4)delete from table where id = 1; - 删除表中ID等于1的数据(delete在Hive 0.14开始可用,并且只能在支持ACID的表上执行)
(5)merge - 合并(MERGE在Hive 2.2开始可用,并且只能在支持ACID的表上执行)
注意:频繁的update和delete操作已经违背了Hive的初衷。不到万不得已的情况,还是使用增量添加的方式最好。
DDL数据库操作
create database 数据库名 | 创建数据库 |
desc/describe database 数据库名 | 查看数据库表结构 |
drop database if exists 数据库名 | 删除数据库 |
DDL数据表操作
show tables; | 查看数据库下存在的表 |
create table cat(cat_id string,cat_name string); | 创建内部表 |
create external cat2(cat_id string,cat_name string); | 创建外部表 |
create table cat4 like cat; | 创建与cat结构一致的cat4表 |
desc cat; | 查看表结构 |
alter table cat2 add columns(group_id string,cat_code string); | 修改表结构 |
drop table cat3; | 删除表 |
select * from cat; | 查看表内容 |
DML数据的导入
先创建一个cat_group,导入内容以‘\t'划分
create table cat_group(group_id string,group_name string)
row format delimited fields
terminated by '\t' stored as textfile;
load data local inpath ‘本地文件路径’ into table cat_group; | 从本地文件导入 |
load data inpath ‘hdfs文件路径’ into table cat_group; | 从hdfs上文件导入 |
insert into table cat_group2 select * from cat_group; | 表与表之间导入 |
insert overwrite table cat_group2 select * from cat_group; | 导入,覆盖内容 |
create table cat_group3 as select * from cat_group2; | 创建时从表导入 |
DML数据的导出
insert overwrite local directory ‘本地路径’ select * from cat_group; | 导出到本地 |
insert overwrite local directory ‘本地路径’ select group_id,concat(’\t’,group_name) from cat_group; | 导出本地,并指定分割符 |
insert overwrite directory ‘hdfs路径’ select * from cat_group; | 导出到hdfs上 |
insert into table cat_group3 select * from cat_group; | 表与表之间的导出 |
待完善…