Hive(三)【DDL 数据定义】
一.DDL数据定义
1.库的DDL
1.1创建数据库
CREATE DATABASE [IF NOT EXISTS] database_name --指定数据库名称
[COMMENT database_comment] --指定数据库描述
[LOCATION hdfs_path] --指定创建的数据库在hdfs上存储的路径
[WITH DBPROPERTIES (property_name=property_value, ...)]; --指定库的一些属性
案例实操
create database if not exists db_hive
comment "this is my first db"
with dbproperties ("name"="db_hive","owner"="atguigu");
create database if not exists db_hive;
--创建数据库,并指定在hdfs上的路径
create database if not exists db_hive2
location '/db_hive2';
1.2查询数据库
show databases;
1.3查看数据库详情
--简单查看
desc database 数据库名;
--详细查看 (详细查看可以看到库的属性信息,简单查看看不到)
desc database extended 数据库名;
1.4切换数据库
use 数据库名;
1.5修改数据库
只能修改数据库的属性信息,别的都无法更改。例如:库名,库的存储位置等元数据信息无法更改。
案例实操
alter database db_hive set dbproperties('createtime'='20200624');
1.6删除数据库
drop database 数据库名;
--如果数据库不为空,可以在最后加上cascade强制删除
drop database 数据库名 cascade;
--为了更严谨,我们可以在删除之前判断数据库是否存在
drop database if exists 数据库名 cascade;
注意:删除掉数据库以后,hdfs上对应的目录也会删除,谨慎操作。
2.表的DDL
2.1创建表
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name --指定表名 【external 外部表/内部表】
[(col_name data_type [COMMENT col_comment], ...)] --指定表的列名,列类型 【列描述】
[COMMENT table_comment] --指定表的描述
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] --指定分区表的分区字段(分区字段可以是多个)
[CLUSTERED BY (col_name, col_name, ...) --指定分桶表的分桶字段
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] --指定分桶表桶内排序字段 指定分桶的个数
[ROW FORMAT DELIMITED --指定hive表在hdfs上存储的原始数据的格式
[FIELDS TERMINATED BY char] --每行数据中字段的分隔符 ascII码表的第一个字符 ^A
[COLLECTION ITEMS TERMINATED BY char] --集合元素分隔符 ascII码表的第二个字符 ^B
[MAP KEYS TERMINATED BY char] --map集合中 key 和 value 的分隔符 ascII码表的第三个字符 ^C
[LINES TERMINATED BY char] --每行数据的分隔符 默认值:'\n'
]
[STORED AS file_format] --指定hive的数据在hdfs上存储的格式
[LOCATION hdfs_path] --指定hive数据在hdfs上存储的路径
[TBLPROPERTIES (property_name=property_value, ...)] --指定表的属性
[AS select_statement] --按照as后面的查询语句的结果来创建表,复制表结构以及表数据
[LIKE table_name] --按照like后面的表结构来创建表,只复制表结构,不复制表数据
2.2管理表(内部表)和外部表
管理表(内部表):hive掌控者这个数据的生命周期,如果删除一个管理表,hdfs上存储的数据也跟着一起删除。所以一般我们创建管理表时,一般不会再location表的存储路径,就默认放在/user/hive/warehouse下
外部表:hive不完全掌控外部表的数据的生命周期,删除外部表,只删除hive表的元数据,不会删除掉hdfs上存储的数据
一般外部表都是先有的hdfs上的数据,然后我们创建一个外部表,手动指定这个外部表的存储路径。
2.3创建表的三种方式
方式一:直接创建
create table student(
id int,name string
)
row format delimited fields terminated by '\t';
方式二:根据AS select语句查询结构创建表,复制表结构,复制表数据
create table student3 as select * from student;
方式三:根据like 创建表,只复制表结构,不复制表数据
create table student4 like student;
2.4创建管理表、外部表
管理表:不加external关键字
create table student(
id int,name string
)
row format delimited fields terminated by '\t';
外部表:
create external table if not exists dept(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by '\t'
location '/company/dept';
2.5外部表和内部表转换
通过设置表属性“EXTERNAL”来控制表是外部表还是内部表
TRUE 是 外部表 FALSE 是内部表
alter table student set tblproperties('EXTERNAL'='TRUE/FALSE');
2.6查看表结构
--简单查看表信息
desc 表名;
--详细查看表信息
desc formatted 表名;
2.7修改表
重命名表
ALTER TABLE table_name RENAME TO new_table_name
案例:alter table student2 rename to student3
更新列
列名可以随意修改,列的类型只能小改大,不能大改小(遵循自动转换规则)
ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]
案例:alter table dept change column deptdesc desc string;
增加列
ADD是代表新增一字段,字段位置在所有列后面(partition列前)
ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], ...)
案例:alter table dept add columns(deptdesc string);
替换列
REPLACE则是表示替换表中所有字段,REPLACE使用的时候,字段的类型要跟之前的类型对应上,数量可以减少或者增加,其实就是包含了更新列,增加列,删除列的功能。
ALTER TABLE table_name REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)
案例:alter table dept replace columns(deptno string, dname,string, loc string);
2.8删除表
drop table dept;
2.9清空表数据(Truncate)
注意:Truncate只能删除管理表,不能删除外部表中数据
truncate table student;
Hive(三)【DDL 数据定义】的更多相关文章
- HIVE之 DDL 数据定义 & DML数据操作
DDL数据库定义 创建数据库 1)创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db. hive (default)> create dat ...
- Hive(5)-DDL数据定义
一. 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_pat ...
- hive从入门到放弃(二)——DDL数据定义
前一篇文章,介绍了什么是 hive,以及 hive 的架构.数据类型,没看的可以点击阅读:hive从入门到放弃(一)--初识hive 今天讲一下 hive 的 DDL 数据定义 创建数据库 CREAT ...
- Hive 官方手册翻译 -- Hive DDL(数据定义语言)
Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache ...
- oracle学习笔记(三) DCL 数据控制语言与 DDL 数据定义语言
DCL 数据控制语言 Data control language 之前说过的授权和收权利语句 grant, revoke DDL 数据定义语言 Data define language create ...
- 第4章 DDL数据定义
第4章 DDL数据定义 4.1 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db. hive (default)> creat ...
- sql 两大类 DDL数据定义语言 和DCL数据控制语言
SQL分为五大类: DDL:数据定义语言 DCL:数据控制语言 DML:数据的操纵语言 DTL:数据事务语言 DQL:数据查询语言. DDL (date definition lang ...
- mysql DDL数据定义语言
DDL数据定义语言 本节涉及MySQL关键字:create.alter(rename,add,chang,modify,drop).drop.delete.truncate等. -- 创建表:-- 数 ...
- DDL数据定义语言
DDL数据定义语言 (一)概述 DDL(Data Definition Language):数据定义语言,用来定义数据库对象,库.表.列等:创建.删除.修改 库,表结构.主要分为操作数据库的DDL和操 ...
随机推荐
- 第一个只出现一次字符的位置 牛客网 剑指Offer
第一个只出现一次字符的位置 牛客网 剑指Offer 题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 ...
- Vue脚手架最新版本安装使用
现在很多的插件如Vant 这类的样式框架,都去兼容了Vue的3.0版本,所以我总结一下如何去简单的搭建一个Vue3.0的框架 开始 一,如何安装 在这里说明一下,Vue脚手架版本,和Vue版本是两个东 ...
- CentOS7 导入oracle数据
1.切换到 oracle用户 #su - oracle 2.导入(一般的不会导入到sys账号下) #imp sys/密码@orcl file=/home/oracle/20200428.dmp fro ...
- /etc/passwd 和 /etc/shadows 详解
linux操作系统上的用户如果需要登录主机,当其输入用户名和密码之后: 首先在/etc/passwd文件中查找是否有你的账号,如果没有无法登录,如果有的话将该用户的UID和GID读出来,此外将此用户的 ...
- PTA 7-2 畅通工程之局部最小花费问题 (35分)
PTA 7-2 畅通工程之局部最小花费问题 (35分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出"畅通工程"的目标:使整个地区任何两个城镇间都可以实 ...
- 工程中实际问题解决两例——基于C#
工程中实际问题解决两例--基于C# 目录 工程中实际问题解决两例--基于C# 1. try catch的妙用 1.1 遇到问题的现象 1.2 原因分析 1.2.1 先从数据库入手 1.2.2 代码日志 ...
- hudi clustering 数据聚集(三 zorder使用)
目前最新的 hudi 版本为 0.9,暂时还不支持 zorder 功能,但 master 分支已经合入了(RFC-28),所以可以自己编译 master 分支,提前体验下 zorder 效果. 环境 ...
- Flink 实践教程:入门(6):读取 PG 数据写入 ClickHouse
作者:腾讯云流计算 Oceanus 团队 流计算 Oceanus 简介 流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的具备一站开发.无缝连接.亚 ...
- java解析Excel日期格式转换问题
Excel上传导入,Excel里面单元格是日期的会解析出来数字,比如2020-07-11会解析为44023解决方法一: Excel单元格格式设置为文本格式.解决方法二: 使用代码处理,把解析出来的44 ...
- 大爽Python入门教程 1-3 简单的循环与判断
大爽Python入门公开课教案 点击查看教程总目录 这里只初步认识下循环和判断,以便于我们去实现一些简单的计算. 循环和判断的详细知识和细节,我们将在后面的章节(大概是第三章)展开阐述. 1 初步了解 ...