Hive——操作数据库创建修改表(DDL数据定义)

news2024/11/24 8:33:58

DDL操作

  • 1. 数据库操作
    • 1.1 创建&查询数据库
    • 1.2 修改&删除数据库
  • 2. 表操作
    • 2.1 创建表
    • 2.2 内部表和外部表
      • 2.2.1 管理表
      • 2.2.2外部表
      • 2.2.3管理表与外部表的互相转换
    • 2.3 修改表

1. 数据库操作

1.1 创建&查询数据库

定义:

CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
  • 创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db。
hive (default)> create database if not exists hive;

在这里插入图片描述

  • 创建一个数据库,指定数据库在 HDFS 上存放的位置
hive (default)> create database db_hive2 location '/db_hive2.db';

1.2 修改&删除数据库

修改数据库
设置属性

hive (default)> alter database db_hive 
set dbproperties('createtime'='20170830');

查看数据库详细信息

 desc database extended db_hive;

删除空数据库

hive>drop database db_hive2;

如果删除的数据库不存在,最好采用 if exists 判断数据库是否存在

 drop database if exists db_hive;

如果数据库不为空,可以采用 cascade 命令,强制删除

 drop database db_hive cascade;

2. 表操作

2.1 创建表

建表语法

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 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, ...)]
[AS select_statement]

(1)CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。
(2)EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时可以指定一个指向实际数据的路径(LOCATION),在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
(3)COMMENT:为表和列添加注释。
(4)PARTITIONED BY 创建分区表
(5)CLUSTERED BY 创建分桶表
(6)SORTED BY 不常用,对桶中的一个或多个列另外排序
(7)ROW FORMAT DELIMITED [FIELDS TERMINATED BY char]—一行字段之间分割标准
(8)STORED AS 指定存储文件类型常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、RCFILE(列式存储格式文件)
(9)LOCATION :指定表在 HDFS 上的存储位置。
(10)AS:后跟查询语句,根据查询结果创建表。
(11)LIKE 允许用户复制现有的表结构,但是不复制数据。

2.2 内部表和外部表

2.2.1 管理表

    默认创建的表都是所谓的管理表,有时也被称为内部表。因为这种表,Hive 会(或多或少地)控制着数据的生命周期。Hive 默认情况下会将这些表的数据存储在由配置项hive.metastore.warehouse.dir(例如,/user/hive/warehouse)所定义的目录的子目录下。

    当我们删除一个管理表时,Hive 也会删除这个表中数据。管理表不适合和其他工具共享数据。

创建表:

create table if not exists student(
id int, name string
)
row format delimited fields terminated by ',';

2.2.2外部表

    因为表是外部表,所以 Hive 并非认为其完全拥有这份数据。删除该表并不会删除掉这
份数据,不过描述表的元数据信息会被删除掉。

  • 外部表使用场景

  • 每天将收集到的网站日志定期流入 HDFS 文本文件。在外部表(原始日志表)的基础上做大量的统计分析,用到的中间表、结果表使用内部表存储,数据通过SELECT+INSERT 进入内部表。

create external table if not exists dept(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by '\t';

2.2.3管理表与外部表的互相转换

查询表的类型

hive (default)> desc formatted student2;

修改内部表 student2 为外部表

alter table student2 set tblproperties('EXTERNAL'='TRUE');

修改外部表 student2 为内部表

alter table student2 set tblproperties('EXTERNAL'='FALSE');

注意:(‘EXTERNAL’=‘TRUE’)和(‘EXTERNAL’=‘FALSE’)为固定写法,区分大小写!

2.3 修改表

重命名表

 ALTER TABLE table_name RENAME TO new_table_name

增加/修改/替换列信息
(1)更新列

ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name 
column_type [COMMENT col_comment] [FIRST|AFTER column_name]

(2)增加和替换列

ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT 
col_comment], ...)

重点使用replace columns()替换整个列

删除表

drop table table_name

创建表
在这里插入图片描述
上传存储文件
在这里插入图片描述

查询存储文件
在这里插入图片描述
查询表信息

在这里插入图片描述

修改表结构

在这里插入图片描述

    在修改表时一般使用replace方式修改,对于新增列,由于表中的数据没有数据会显示NULL,对于表中多余的数据,查询时不会进行显示。

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

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

相关文章

IDEA settings设置技巧,最常用快捷键,让你的编译器用更加得心应手

导读 每次下载安装新的 IDEA 以后,都免不了对该软件进行一些优化配置,以方便我们在使用的时候更加得心应手。一份趁手的设置,无疑能让我们的工作效率事半功倍。 碍于每次自己重装 IDEA 都需要去网搜一大堆文章去设置 settings,所以…

Vue框架的学习(Vue的基础指令操作二 V-For)第二课

今天的任务理解下面的几个指令操作 重点在V-for上 V-if V-else V-show V-For 本文章的重心放在V-For 从数据到数组到对象一步一步的去查找 底层的原理 v-show和v-if的用法看起来是一致的,也是根据一个条件决定是否显示元素或者组件 下面是 V-if V-else V-sho…

1. 云计算简介

1.2 云计算的定义和分类 云计算的定义 美国国家标准与技术研究院(NIST)定义: 云计算是一种模型,它可以实现随时随地、便捷地、随需应变地从可配置计算资源共享池中获取所需的资源(例如,网络、服务器、存…

【记录】终端如何 进入conda(base) 环境,如何退出 conda(base)环境,终端快速进入Jupyter notebook的方法

目录一、终端 进入 conda(base) 环境二、终端 退出 conda(base) 环境三、终端进入 Jupyter notebook 的方法一、终端 进入 conda(base) 环境 --->> win R : 输入cmd 回车,进入终端界面。…

什么是微服务?怎么测试?今天一次性讲清楚...

01、什么是微服务 Adrian Cockcroft对微服务的表述:loosely couped service oriented architecture with bounded context。 这里涉及两个微服务的概念: loosely couped:松耦合 松耦合可以引申出其他概念,如各自独立&#xff0c…

坚持软件自主可控,打造国产化公文交换系统

编者按:软件自主可控是什么意思?企业如何对自己使用的软件做到自主可控?本文分析了软件自主可控的概念及意义,并通关相关案例展示了国产化低代码平台是如何助力企业打造公文交换系统的。 软件自主可控的意义 说到软件的自主可控&…

【分享 10 个日常使用的脚本】

🤵‍♂️ 个人主页老虎也淘气 个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏…

第十节:继承【java】

目录 📘1.1为什么需要继承 📒1.2 继承概念 📗1.3 继承的语法 📕1.4 父类成员访问 🎱1.4.1 子类中访问父类的成员变量 🎎1.4.2 子类中访问父类的成员方法 📙1.5 super关键字 &#x1f4d…

基于Matlab利用移动目标指示雷达抑制地面杂波(附源码)

目录 一、构建雷达系统 二、定义目标 三、杂波 四、仿真接收到的脉冲和匹配滤波器 五、使用三脉冲消除器执行 六、使用交错PRF模拟接收到的脉冲 七、对交错的 PRF 执行 八、总结 九、程序 本示例显示了移动目标指示 (MTI) 雷达的设计&#xff0…

《Java》private、protected、public区别及解析

我们今天来给大家解析一下Java中四种修饰类型的区别。 那么有的老铁就疑惑了,文章名称不是说三种吗?其实还有一种隐藏的修饰类型(默认类型)英文翻译过来的话是define,这就是我们什么都不修饰,例如&#xff…

【C/C++动态内存 or 柔性数组】——对动态内存分配以及柔性数组的概念进行详细解读(张三 or 李四)

目录前言(栈区、堆区、静态区)动态内存函数malloc与freecalloc与freerealloc与free常见的动态内存错误经典笔试题(再见张三)柔性数组前言(栈区、堆区、静态区) 请耐心看完,看完后就会对内存中的…

天玑9200领跑背后,高端芯片掀起蝴蝶效应

过去一年,天玑9000让联发科在高端旗舰机市场掀起了一场“旋风”。全球知名市场调研机构Counterpoint Research发布的报告显示,联发科在全球和中国智能手机芯片市场份额中连续八个季度保持第一的领先地位,且在高端手机市场的份额有显著增长。另…

PowerShell 美化(谁不想要一个好看的终端呢)

PowerShell 美化安装powershellScoop 安装Oh My Posh安装字体设置应用主题花里胡哨的折腾(bushi 多种主题任君挑选 安装powershell 地址:https://github.com/PowerShell/PowerShell/releases 本文主要使用 Oh My Posh 进行美化 地址:https…

C语言之指针(中)

目录 前言 一、字符指针 1.用法(两种) 2.例子 二、指针数组 三、数组指针 1.数组指针的定义 1.概念 2.例子 2.数组名 3.使用 1.使用的情景 2.例子 四、数组参数、指针参数 1.数组传参 2.指针传参 五、函数指针 1.函数的地址 2.函数指针 3.例子 4.两个特…

【C++】泛型编程之模板初阶

文章目录1. 泛型编程2. 模板2.1 模板的概念3. 函数模板3.1 函数模板概念3.2 函数模板语法3.3 函数模板的原理3.4 函数模板的实例化3.5 模板参数的匹配原则3.6 普通函数与函数模板的区别4. 类模板4.1 类模板语法4.2 类模板的实例化4.3 类模板与函数模板区别4.4 类模板分文件编写…

Word控件Spire.Doc 【文本】教程(17) ;在Word中设置文本方向

Spire.NET的Spire.是MicrosoftDoc人员对Word文档进行操作打印的.NET类库。帮助单独安装Microsoft Word在开发环境下,轻松便捷地创建、编辑、转换和转换Word文档。拥有近10个专业开发经验Spire系列办公文档开发打印工具,专注于创建、编辑、转换和Word/Exc…

C++设计模式---组合模式

文章目录使用场景组合模式的定义安全组合模式使用场景 组合模式和类与类之间的组合是不同的概念。 组合模式主要用来处理树形结构的数据,如果要表达的数据不是树形结构,就不太适合组合模式。 比如我们有一个目录结构: 这个目录我们把它绘…

图解LeetCode——1704. 判断字符串的两半是否相似(难度:简单)

一、题目 给你一个偶数长度的字符串 s 。将其拆分成长度相同的两半,前一半为 a ,后一半为 b 。 两个字符串 相似 的前提是它们都含有相同数目的元音(a,e,i,o,u,A,E&…

几分钟实现对恶意IP地址进行拦截,腾讯云Web防火墙实在太香了!

一、概述 在平时上网中,我们经常听到“xxx被拉入黑名单”、“把xxx加入白名单”,黑白名单成了禁止访问和允许访问的代名词,黑白名单是一种常见的安全机制,用于隔离流量,然后对隔离的流量采取特定操作。 黑名单代表只…

Redis高可用之持久化

一 Redis高可用 什么是高可用 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常…