Hive | DDL and DML

179 阅读2分钟

「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战

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;表与表之间的导出