Hive——DDL(Data Definition Language)数据定义语句用法详解

1.数据库操作

1.1创建数据库

CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
  • IF NOT EXISTS:可选参数,表示如果数据库已经存在,则不会创建,避免出现重复创建的情况。
  • COMMENT:可选参数,用于添加数据库的注释
  • LOCATION:可选参数,指定数据库的存储路径

在这里插入图片描述

  • WITH DBPROPERTIES:可选参数,用于设置数据库的额外属性

示例:

CREATE DATABASE IF NOT EXISTS mydatabase
COMMENT 'This is my database'
LOCATION '/user/hive/warehouse/mydatabase.db'
WITH DBPROPERTIES ('owner'='yushifu', 'created_date'='2024-04-23');

在这里插入图片描述

在这里插入图片描述

  • 创建一个名为"mydatabase"的数据库,如果该数据库已存在则不会重新创建。
  • 指定了注释为"This is my database",并将其存储路径设置为"/user/hive/warehouse/mydatabase.db"
  • 设置了额外属性"owner"为"yushifu",“created_date"为"2024-04-23”。

1.2 查询数据库

在Hive中,可以使用以下语句来列出所有的数据库,或者使用通配符来匹配数据库名:

SHOW DATABASES [LIKE 'identifier_with_wildcards'];
  • LIKE 'identifier_with_wildcards':可选参数,用于指定要匹配的数据库名

在这里插入图片描述


示例:

- (1)列出所有数据库:

SHOW DATABASES;

在这里插入图片描述
在这里插入图片描述

- (2)列出以my开头的数据库:

show databases like 'my*';

在这里插入图片描述
在这里插入图片描述

- (3)列出以d开头或者m开头的数据库

show databases like 'd*|m* ';

在这里插入图片描述


1.3 查看数据库信息

DESCRIBE DATABASE [EXTENDED] db_name;

在Hive中,DESCRIBE DATABASE EXTENDED命令提供了比普通DESCRIBE DATABASE更详细的数据库信息,包括一些额外的属性和元数据。

使用DESCRIBE DATABASE EXTENDED命令可以获取以下额外的信息:

1. 数据库的所有者(Owner):显示数据库的所有者信息。
2. 创建时间(Create Time):显示数据库创建的时间戳。
3. 位置(Location):显示数据库在Hadoop文件系统中的存储位置。
4. 参数(Parameters):显示数据库的配置参数,如属性、描述等。


示例:

- (1)查看数据库mydatabase的基本信息:

在这里插入图片描述

在这里插入图片描述


- (2)查看数据库mydatabase的详细信息:

在这里插入图片描述

在这里插入图片描述


1.4 修改数据库

  • 用户可以使用alter database命令修改数据库某些信息,其中能够修改的信息包括dbpropertieslocationowner user
  • 需要注意的是:修改数据库location,不会改变当前已有表的路径信息!! 而只是改变后续创建的新表的默认的父目录。
  1. 修改数据库的所有者
ALTER DATABASE db_name SET OWNER [USER|ROLE] owner_name;
  1. 修改数据库的位置
ALTER DATABASE db_name SET LOCATION 'new_location';

这将会修改数据库的存储位置。

  1. 修改数据库的属性
ALTER DATABASE db_name SET DBPROPERTIES (property_name=property_value, ...);

示例:

-- 修改数据库的所有者为 'new_owner'
ALTER DATABASE mydatabase SET OWNER USER new_owner;-- 修改数据库的存储位置为 '/new_location'
ALTER DATABASE mydatabase SET LOCATION '/new_location';-- 修改数据库的属性,例如添加或者修改描述
ALTER DATABASE mydatabase SET DBPROPERTIES ('description' = 'New description for my database');

1.5 删除数据库

DROP DATABASE [IF EXISTS] database_name [RESTRICT|CASCADE];

  • RESTRICT:严格模式,若数据库不为空,则会删除失败,默认为该模式
  • CASCADE:级联模式,若数据库不为空,则会将库中的表一并删除

1.6切换数据库

USE database_name


2.数据表操作

2.1 创建表

2.1.1 普通建表

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name   
(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 row_format] 
[STORED AS file_format]
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)];
  • CREATE: 指定了创建表的操作。

  • TEMPORARY: 可选的关键字,用于创建临时表,该表在当前会话结束时将被删除

  • EXTERNAL: 可选的关键字,用于创建外部表,该表的数据存储在外部位置,Hive只管理元数据,不管理数据文件。外部表,与之相对应的是内部表(管理表)。管理表意味着Hive会完全接管该表,包括元数据和HDFS中的数据。而外部表则意味着Hive只接管元数据,而不完全接管HDFS中的数据

  • IF NOT EXISTS: 可选的关键字,如果表已经存在,则不报错,直接忽略该操作。

  • db_name: 可选的数据库名称,指定了创建表所属的数据库,如果不指定,默认在当前数据库建表

  • table_name: 要创建的表的名称。

  • col_name data_type [COMMENT col_comment]: 表的列定义,包括列名、数据类型,以及可选的列注释。

  • COMMENT table_comment: 可选的表注释,描述整个表的含义。

  • PARTITIONED BY: 可选的子句,用于指定分区列,表将根据这些列的值进行分区存储。(创建分区表)

  • CLUSTERED BY: 可选的子句,用于指定表的分桶列,将表数据分桶存储(创建分桶表)

  • SORTED BY: 可选的子句,用于指定分桶内的数据排序方式

  • ROW FORMAT: 可选的子句,用于指定表中数据的行格式。
    在这里插入图片描述

  • STORED AS: 可选的子句,用于指定表数据的存储格式。
    常用的文件格式有,textfile(默认值),sequence file,orc file、parquet file等等。

  • LOCATION: 可选的子句,用于指定表数据存储的位置,仅在创建外部表时使用。
    在这里插入图片描述
    在这里插入图片描述

  • TBLPROPERTIES: 可选的子句,用于指定表的属性,例如压缩方式、存储格式等。

示例:

在这里插入图片描述

-- 创建名为 "t1" 的表,如果该表不存在则执行创建操作
CREATE TABLE IF NOT EXISTS default.t1
(-- 学生ID,整数类型,用于唯一标识学生id INT COMMENT 'student\'s id',-- 学生姓名,字符串类型,存储学生的姓名信息name STRING COMMENT 'student\'s name',-- 学生地址,字符串类型,存储学生的地址信息addr STRING COMMENT 'student\'s addr'
)
-- 表的注释,描述该表存储的是学生信息
COMMENT 'student\'s information'
-- 指定行格式为逗号分隔的文本文件
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
-- 指定表数据的存储格式为文本文件
STORED AS TEXTFILE
-- 指定表的属性,包括作者和创建时间
TBLPROPERTIES ('author'='yushifu', 'create_time'='2024-04-23');

在这里插入图片描述

在这里插入图片描述

-- 如果不存在,创建名为 "t2" 的表
CREATE TABLE IF NOT EXISTS default.t2
(-- 学生ID,整数类型,用于唯一标识学生id INT COMMENT 'student\'s id',-- 学生姓名,字符串类型,存储学生的姓名信息name STRING COMMENT 'student\'s name',-- 学生地址,字符串类型,存储学生的地址信息addr STRING COMMENT 'student\'s addr'
)
-- 表的注释,描述该表存储的是学生信息
COMMENT 'student\'s information'
-- 指定行格式为逗号分隔的文本文件
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','STORED AS TEXTFILE-- 指定表数据的存储位置为 '/t2'
LOCATION '/t2'
-- 指定表的属性,包括作者和创建时间
TBLPROPERTIES ('author'='yushifu', 'create_time'='2024-04-23');

在这里插入图片描述


2.1.2 Create Table As Select(CTAS)建表

CREATE TABLE new_table_name
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION 'hdfs_path']
[TBLPROPERTIES (property_name = property_value, ...)]
AS
SELECT column1, column2, ...
FROM existing_table_name
[WHERE condition];
  • new_table_name: 新表的名称。
  • ROW FORMAT row_format: 可选项,用于指定新表的行格式。
  • STORED AS file_format: 可选项,用于指定新表的存储文件格式。
  • LOCATION 'hdfs_path': 可选项,指定新表的存储位置。
  • TBLPROPERTIES (property_name = property_value, ...): 可选项,用于指定表级别的属性。
  • AS: 关键字,表示创建表并将其填充为SELECT查询的结果。
  • SELECT column1, column2, ...: SELECT子句用于指定要从现有表中选择的列。
  • FROM existing_table_name: 指定要从中获取数据的现有表。
  • [WHERE condition]: 可选项,用于过滤要选择的行。

示例:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.1.3 Create Table Like语法

该语法允许用户复刻一张已经存在的表结构,与上述的CTAS语法不同,该语法创建出来的表中不包含数据。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.4 内部表与外部表

内部表:

  • Hive中默认创建的表都是的内部表,有时也被称为管理表
  • 对于内部表,Hive会完全管理表的元数据和数据文件
    在这里插入图片描述
    desc formatted student;查看详细表信息可知表类型。
    在这里插入图片描述
    在这里插入图片描述

删除内部表之后 HDFS的也会删除,因为对于内部表,Hive会完全管理表的元数据和数据文件。
在这里插入图片描述
删除内部表后,HDFS中的文件也会随之删除!
在这里插入图片描述

在这里插入图片描述


外部表:

  • 外部表通常可用于处理其他工具上传的数据文件。
  • 于外部表,Hive只负责管理元数据,不负责管理HDFS中的数据文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

2.1.5 SERDE和复杂数据类型

在这里插入图片描述
在这里插入图片描述

若现有如下格式的JSON文件需要由Hive进行分析处理,请考虑如何设计表?

{"name": "yushifu","age": 18,"hobbies": ["singing", "jumping", "rapping","basketball"],"address": {"street": "123 Main Street","city": "弗洛里达","country": "USA"}
}

在这里插入图片描述

  • 可以考虑使用专门负责JSON文件的JSON Serde。
  • 设计表字段时,表的字段与JSON字符串中的一级字段保持一致。
  • 对于具有嵌套结构的JSON字符串,考虑使用合适复杂数据类型保存其内容。
create table stu
(name     string,age		 int,hobbies	 map<string,int>,address  struct<city:string,street:string,postal_code:int>
)
row format serde 'org.apache.hadoop.hive.serde2.JsonSerDe'
location '/user/hive/warehouse/teacher';

2.2 查看表

2.2.1 展示表

SHOW TABLES [IN database_name] LIKE ['identifier_with_wildcards'];
  • like通配表达式说明:*表示任意个任意字符,|表示或的关系

show tables like ‘stu*’;
在这里插入图片描述


2.1.5 查看表信息

(1)查看基本信息

desc table;

在这里插入图片描述

(2) 查看详细信息

desc formatted table;

在这里插入图片描述


2.3 修改表

在Apache Hive中,要修改表的属性或结构,你可以使用ALTER TABLE语句。以下是一些常见的用法:

1.修改表名称:

ALTER TABLE old_table_name RENAME TO new_table_name;
在这里插入图片描述
在这里插入图片描述

2.添加列:
该语句允许用户增加新的列,新增列的位置位于末尾。
ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], ...);

在这里插入图片描述
在这里插入图片描述

3.修改列名称和类型(更新列):
该语句允许用户修改指定列的列名、数据类型、注释信息以及在表中的位置
ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]
在这里插入图片描述

4.替换列:
该语句允许用户用新的列集替换表中原有的全部列。
ALTER TABLE table_name REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)
在这里插入图片描述
在这里插入图片描述

2.4 删除表

DROP TABLE [IF EXISTS] table_name;

2.5 清空表

清空表数据内容。

TRUNCATE [TABLE] table_name

在这里插入图片描述
在这里插入图片描述

  • truncate只能清空管理表,不能删除外部表中数据。
  • 因为Hive只能管理内部表的数据文件,外部表无权限处理。
    在这里插入图片描述

整理不易!一键三连呀各位~🤣🤣🤣

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/3927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Ant-Desgin 头像上传框】限制数量为1张图片,base64,其他需求可以改我组件中的代码

Ant-Desgin 头像上传框 样式图参数主要代码UpLoad 组件父组件 样式图 图片数量限制为1&#xff0c;当选择了图片后&#xff0c;需要切换图像时需点击头像完成切换 参数 /*** description: 图片上传组件* param {*} action: 上传地址* param {*} width: 宽度* param {*} height…

三级等保建设及测评技术方案书(Word原件2024)

1信息系统详细设计方案 1.1安全建设需求分析 1.1.1网络结构安全 1.1.2边界安全风险与需求分析 1.1.3运维风险需求分析 1.1.4关键服务器管理风险分析 1.1.5关键服务器用户操作管理风险分析 1.1.6数据库敏感数据运维风险分析 1.1.7“人机”运维操作行为风险综合分析 1.2…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(四)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 7 - 9节&#xff09; P7《06.ArkUI组件-Text》 本节我们继续学习 Text 文本组件&#xff1a; reaources目录下有3个主要的目录&…

Java使用SpringBoot和EasyExcel 实现动态数据导出实战

Java使用SpringBoot和EasyExcel 实现动态数据导出实战 1、前言2、【资源地址】3、代码示例(demo)4、目前Java实现数据导出为Excel方式5、依赖6、总结 1、前言 工作中有用到将数据导出为Excel的场景&#xff0c;在此记录下。在日常开发中&#xff0c;Excel文件处理是一项常见的…

JSON六种值类型的写法

JSON&#xff08;JavaScript Object Notation&#xff09;是一种人类可读的文本数据格式。它源于JavaScript&#xff0c;标准开放&#xff0c;格式要求更为严格&#xff0c;独立于具体编程语言&#xff0c;常用于数据交换。 列举一段JSON数据&#xff0c;解释JSON六种值类型的…

C基础语法速览

叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff0c;有错误、未定义、不合适的内容请尽情指出&#xff01; 文章目录 1.数据类型1.1.数据类型的常见分类1.2.数据类型的符号修饰1.3.数据…

店匠科技技术产品闪耀,引领新质生产力发展

在科技飞速发展的今天,新质生产力正成为推动社会进步和经济高质量发展的核心力量。店匠科技,作为一家致力于为全球B2C电商提供产品和技术解决方案的领先企业,其技术产品不仅体现了新质生产力的创新特质,更在推动电商行业转型升级中发挥了重要作用。 新质生产力,以创新为主导,摆…

单片机为什么有多组VDD?

以前我在画尺寸小的PCB时&#xff0c;比较头痛&#xff0c;特别是芯片引脚又多的&#xff0c;芯片底下&#xff0c;又不能打太多过孔。 可能有些老铁也比较好奇&#xff0c;为什么一个单片机芯片&#xff0c;有这么多组VDD和VSS。 比如下面这个100个引脚的STM32单片机。 有5组…

Postman 在 Linux 上的安装指南:简单快速开始使用

本文将介绍如何在 Linux 上安装 Postman 的详细步骤&#xff0c;Postman 支持的 Linux 的发行版包括&#xff1a;Ubuntu 14.04 及更高版本&#xff0c;Fedora 24&#xff0c;Debian 8 及更高版本。下面将介绍其具体的安装方法。 手动安装 Postman 的下载地址&#xff0c;下载…

JavaScript算法描述【排序与搜索】六大经典排序|合并两个有序数组|第一个错误的版本

&#x1f427;主页详情&#xff1a;Choice~的个人主页 &#x1f4e2;作者简介&#xff1a;&#x1f3c5;物联网领域创作者&#x1f3c5; and &#x1f3c5;阿里专家博主&#x1f3c5; and &#x1f3c5;华为云享专家&#x1f3c5; ✍️人生格言&#xff1a;最慢的步伐不是跬步&…

【智能算法】囊状虫群算法(TSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2020年&#xff0c;S Kaur等人受到囊状虫群自然行为启发&#xff0c;提出了囊状虫群算法&#xff08;Tunicate Swarm Algorithm, TSA&#xff09;。 2.算法原理 2.1算法思想 TSA模拟了囊状虫群在导…

VTK----VTK数据结构详解3(代码篇)

上篇文章&#xff08;VTK----VTK数据结构详解&#xff08;计算机篇&#xff09;-CSDN博客&#xff09;从计算机数据结构&#xff08;数组、链表等&#xff09;的角度对数据数组、数据对象、数据属性的实现原理进行了说明&#xff0c;下面从代码的层面详细说明它们的使用及相关实…

nginx 交叉编译,启动报错nginx: [emerg] getgrnam(“nogroup“) failed 的原因和解决办法

目录 一、错误提示 nginx: [emerg] getgrnam("nogroup") failed二、解决办法三、测试 一、错误提示 nginx: [emerg] getgrnam(“nogroup”) failed nginx 交叉编译&#xff0c;在开发板上启动报错 nginx: [emerg] getgrnam("nogroup") failed二、解决办法…

笔记本硬盘坏了怎么把数据弄出来 笔记本硬盘数据恢复一般需要多少钱

现在办公基本都离不开笔记本电脑&#xff0c;就连学生写作业也大多是都在电脑上完成。硬盘作为电脑存储的重要组成部分&#xff0c;承载着存储文件和各类软件的重任。如果硬盘出现故障&#xff0c;基本上这台电脑就无法正常工作&#xff0c;同时我们可能面临丢失很多重要的数据…

电气设备绝缘的高电压试验(二)——高电压的测量

本篇为本科课程《高电压工程基础》的笔记。 本篇为这一单元的第二篇笔记。上一篇传送门。 稳态高电压的测量 稳态高电压主要指的是工频交流高压和直流高压。高压测量系统常常含有转换装置、转换装置到试验品之间的引线、接地连线、低压测量回路和测量仪表等。 实验室测量方…

【python】语言学习笔记--用来记录总结

请问以下变量哪些是tuple类型&#xff1a; a ()b (1)c [2]d (3,)e (4,5,6)answer在Python中&#xff0c;元组&#xff08;tuple&#xff09;是由逗号分隔的一组值组成的有序序列&#xff0c;通常用圆括号括起来。让我们逐个检查变量&#xff0c;看哪些是元组类型&#xff…

【UE5.1 C++】提升编译速度

步骤 1. 在“C:\Users\用户\AppData\Roaming\Unreal Engine\UnrealBuildTool”目录下找到“BuildConfiguration.xml”文件 打开“BuildConfiguration.xml”&#xff0c;添加如下部分内容 <?xml version"1.0" encoding"utf-8" ?> <Configuratio…

JavaSE字节缓冲流

欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与空间的平衡&#xff0c;0与1的延伸的后端开发者。 博客特色&#xff1a; 在我的博客中&a…

中移在线ChinaMobile系统单机和分布式应用的登录校验解决方案

单机的Tomcat应用登录校验&#xff1a; 用户首次登录成功后&#xff0c;服务端会创建一个Session会话&#xff0c;客户端会生成一个sessionid&#xff0c;客户端会把sessionid保存到cookie里&#xff0c;每次请求都携带这个sessionid&#xff0c;服务端通过校验来判断是拦截还是…

Vuforia AR篇(四)— AR虚拟按钮

目录 前言一、创建虚拟按钮二、创建脚本三、效果 前言 在当今互联网和移动设备普及的背景下&#xff0c;**增强现实&#xff08;AR&#xff09;**技术正迅速成为连接现实世界与数字信息的重要桥梁。AR虚拟按钮作为这一技术的创新应用&#xff0c;不仅提供了一种全新的用户交互…