2021-02-03 HiveSQL:DDL和DML

一、DDL
Hive中的DDL和MySQL中基本一致。

1.数据库的操作
数据库操作.png

2.表的操作
2.1创建表
相较于MySQL,Hive没有索引、主键。但是会有各种类型的表,如内部表、外部表、分区表、分桶表等。

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 表名
[(字段名 类型 COMMENT 字段注释,...)]
[COMMENT  表注释]
[PARTITIONED BY (字段名 类型  COMMENT  字段注释,...)]
[CLUSTERED BY (字段名 类型 COMMENT  字段注释,....)]
[LOCATION HDFS 路径]

具体解释:
--CREATE  TABLE 创建表必选,如果指定的表已存在会报错,可结合IF NOT EXISTS使用避免报错;
--EXTERNAL配合LOCATION使用;
--COMMENT表/字段添加注释;
--PARTITIONED BY创建分区表;
--CLUSTERED BY创建分桶表;
--LOCATION用来指定表在HDFS上的存储位置,如果不指定,会默认放在/user/hive/warehouse下。

2.2内部表
未被EXTERNAL修饰的表是管理表,即内部表。
2.2.1存储路径

hive.metastore.warehouse.dir文件
(默认:/user/hive/warehouse/库名.db/表名)

2.2.2创建内部表:

-- 创建表
create table if not exists student_info(
 student_id int,
 student_name string
);
-- 根据查询结果创建表(MySQL适用)
create table if not exists student_info1 
as select * from student_info;
-- 复制已有表结构,仅复制表结构无数据(MySQL适用)
create table if not exists student_info2 like student_info;

-- 查询表
desc 表名;
-- 查询表(除了表中字段,可以查看表的其他信息(如是不是内部表)(mysql不可用))
desc formatted 表名;

2.2.3删除内部表
删除内部表,会把所有数据全部删除。

2.3外部表
被EXTERNAL修饰的表。
2.3.1存储路径
可通过location自行指定。(不指定的话,会默认在/user/hive/warehouse/数据库名.db/表名,并将属于这个表的数据存放在这里)
2.3.2创建外部表
可以直接创建或复制已有表结构(不能根据查询结果创建)

-- 创建外部表
create external table if not exists class_info1 like class_info;
-- 导入数据
load data [local] inpath 路径 [overwrite] into table 表名;
-- 查询表结构
desc formatted class_info;
-- Table Type:    EXTERNAL_TABLE   

2.3.3删除外部表
删除外部表,仅删除元数据(描述数据属性的数据),hdfs文件不会被删除。
2.3.4内部表和外部表的转换

-- 将外部表设置为内部表
alter table 表名 set tblproperties('EXTERNAL'='FALSE');
-- 将内部表设置为外部表
alter table 表名 set tblproperties('EXTERNAL'='TRUE');
-- ⚠️:只能使用单引号,并且EXTERNAL这里区分大小写。

2.4 分区表
分区表是指hdfs文件系统上的独立文件夹。其下,是分区表中的所有数据文件。
数据导入:将数据源文件上传到hdfs中并直接放到数据库的表下。该命令必须在linux终端中输入,不能在hive输入。
在linux端导入数据后,需要在hive中修复分区表后,数据才可在hive中查询到。

hdfs dfs -put /root/datas/表名/* /user/hive/warehouse/库.db/表名
msck repair table 表名;  

2.5表操作

-- 修改表名:
alter table 旧表名 rename to 新表名;
-- 删除表:    
drop table 表名;

二、DML的数据导入和导出
DML.png

1.数据导入—load

load data [local] inpath 路径 [overwrite] into table 表名;
-- load data:加载数据
-- local:从本地加载到hive表(复制),不写是从hdfs中加载(移动/剪切)
-- inpath:数据文件的路径
-- overwrite覆盖已有数据,不写就是在原有数据追加
-- into table:要加载的目标表

2.数据导出—hive shell命令导出

-- 适合简单的查询
bin/hive -e "sql查询语句" >> /root/文件名.txt

-- 适合复杂的查询(使用vi/vim编辑一个sql文件)
bin/hive -f /root/sql文件名.sql >> /root/文件名.txt

finalshell中找到文件之间下载:
root/datas/数据文件,右击下载。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容