Hive(7) Hive的DML语句-Hive的数据库和表的修改和删除

2023-11-17


Hive(3) DML语句

DML 数据操作语句

导入数据

直接从文件向表中导入数据(load data)

load data [local] inpath <文件路径> [overwrite] 
into table <表名> 
[partition (<分区名> = <值>, ...)]

说明

  • local : 如果加上local, 就是本地文件上传, 如果不加, 就是HDFS文件上传
  • overwrite : 如果加上该属性, 就把原先的表中数据全部清除, 然后再加入新数据, 如果不加该属性, 就是在原来数据的基础上追加数据
  • partition (<分区名> = <值>, …) : 表示上传到哪个分区

注意

本地上传的话, 文件依旧存在(复制), 但是如果是HDFS上传, 原本的文件就不存在了(移动)


insert 语句

insert into <表名> 
values(<值列表1>) (<值列表2>) ... ;

注意

1. insert不支持插入部分字段, 即不像MySQL中指定部分字段然后插入部分字段的值

2. 因为Hive现将逻辑翻译为MapReduce, 然后再执行, 所以一般不这么写, 因为效率太慢, 一般使用insert语句, 都是从一个表中向另一个表中导入数据, 见下面


通过查询向表中插入数据

insert [overwrite] table <表名> 
partition(<分区字段> = <>) 
select <字段列表> 
from <表名2> 
where <条件> ;

也可以先写from, 这样可以同时向多张表或多个分区中插入数据

from <表名2> 
insert [overwrite] table <表名1> partition(<分区字段> = <>) 
select <字段列表> where <条件>
insert [overwrite] table <表名2> partition(<分区字段> = <>) 
select <字段列表> where <条件>

通过查询创建一个新表

create table [if noe exists] <新表名>
as select <字段列表>
from <旧表名>
... ;

举例 创建一个学生表表, 从班级表中导入数据

create external table if not exists 学生表(
    学生ID int, 
    姓名 string
)
as select 学生, 姓名 from 班级表;

直接使用location指定加载的数据路径

如果我们想要加载某个文件路径下的数据, 又知道某个文件在hdfs中的路径, 可以创建一个表, 直接指定该文件的路径就可以

create external table [if not exists] <表名>(
	<字段, 属性列表>
)
row format <分割形式>
localtion <文件路径>;

举例/student/ 目录下的文件映射成一张外部表

create external table if not exists student5(
    id int, name string
)
row format delimited fields terminated by '\t'
location '/student;

import

使用import 命令, 将之前导出的备份文件导入

import table <表名>
[partition(<分区名> = <>)]
form <目录路径> 

注意

使用import导入, 只能导入之前导出的表, 不能导入一个没有元数据的目录作为一个表



数据导出

insert 导出

insert overwrite [local] directory <输出路径> 
[row format delimited fields terminated by '<分隔符>'] 
<select 语句> ;

说明

  • local : 如果添加local就是导出到本地, 如果不加就是导出到HDFS中
  • row format : 将导出结果格式化, 如果不指定, 默认使用 ‘\t’

使用Hadoop命令导出

这种方法说白了就是使用HDFS命令下载表文件到本地

dfs -get <HDFS下的表文件路径> <本地文件路径>;

使用Hive Shell命令导出

使用hive shell需要在在Hive 的bin目录下执行, 如果配置了Hive 的全局环境变量, 可以在任意目录下执行

hive -e '<select语句>' <导出到本地的文件路径>;

export

使用export 指令导出, 会连整张表的元数据和详细信息一并导出, 如果以后需要加载这部分内容, 直接使用import 语句就可以完整的加载整张表

export table <数据库名.表名> to <本地文件路径>;

使用sqoop

需要单独安装和学习sqoop



清空数据

truncate table <表名>; 

注意

drop 语句不同, truncate 只会清楚表中所有的行, 但是不会删除这张表

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive(7) Hive的DML语句-Hive的数据库和表的修改和删除 的相关文章

随机推荐

  • uniapp 在app和小程序端使用webview进行数据交互

    结论 app端支持比较好可以做到实时传递 微信小程序支持比较差 小程序向url传参只能通过url url向app传参需要特定时机 后退 组件销毁 分享 复制链接 触发才能收到消息 以下是代码 app端 需要使用nvue
  • 数组建堆(heapify)

    将一个数组调整为最大堆 根据堆的性质 只要保证部分有序即可 即根节点大于左右节点的值 将数组抽象为一个完全二叉树 所以只要从最后一个非叶子节点向前遍历每一个节点即可 如果当前节点比左右子树节点都大 则已经是一个最大堆 否则将当前节点与左右节
  • React中的组件以及组件实例的三大属性(详细类的复习)

    前言 我们为什么要模块化 是因为要复用编码 提高效率 react就是面向组件编程 函数式组件 函数不能中作为react的节点 就跟正常写函数一样 需要注意的是首字母需要大写 把函数封装为组件 所以把组件渲染到页面上时要使用组件的形式 因为开
  • Smart Tools 网站的架构之美

    本文将简要介绍Smart Tools工具箱网站的架构设计 带领大家一起领略架构之美 Smart Tools是一款实用的在线工具箱网站 地址 https smart tools cn 总体架构 Smart Tools工具箱网站是采用前后端分离
  • 为什么无法用数组名输出数组的的首地址

    当我们直接输出其他类型数组的数组名时 打印的都是一串地址 而字符数组打印的是字符串 为什么 因为字符串中 0 这个结束符 计算机可以知道在哪里读取结束 所以打印数组名就代表输出里面存储的字符串 其他类型没有结束符 计算机不知道从哪里停止 所
  • vue组件生命周期有哪些?vue2和vue3的生命周期图牢记于心,附面试题1

    单选题 关于vue组件生命周期说法错误的是 A 在data中的对象的某个属性和input双向绑定 修改input的值 在beforeDestroy中获取的值是修改过后的值 B ajax请求可以放在created钩子函数中 C 在create
  • Flutter每次进界面都刷新数据

    前言 需求 每次进去消息中心需要请求接口刷新数据 点击打开子界面返回也要请求数据改变状态 解决方法一 1 在initState方法加载数据 override void initState super initState 加载数据 loadD
  • git基础介绍与GitKraken操作简记

    刚开始尝试使用git的时候 简直是被弄得生不如死啊 写了半天的代码一下子被删了 那时候的心情简直想SHI 后来没办法 抽了点时间学习了一下git的原理 其实就是你的文件现在到底在什么状态 这么一个问题 由于只是了解 所以不知道具体的操作 具
  • Redis有效时间设置及时间过期处理

    本文对redis的过期处理机制做个简单的概述 让大家有个基本的认识 Redis中有个设置时间过期的功能 即对存储在redis数据库中的值可以设置一个过期时间 作为一个缓存数据库 这是非常实用的 如我们一般项目中的token或者一些登录信息
  • 打开PowerPoint提示:PowerPoint上次起送时失败。以安全模式启动PowperPoint将帮助您纠正或发现启动中的问题

    PowerPoint 无法打开 1 问题 PowerPoint 上次启动时失败 以安全模式启动PowerPoint 将帮助您纠正或发现启动中的问题 以便下一次成功启动应用程序 但是在这种模式下 一些功能被禁用 是否使用 安全模式 启动Pow
  • 数学计算模拟类问题:加法,除法和幂,注意越界问题。题 剑指Offer,Pow(x, n) ,Divide Two Integers

    数学计算的模拟类题目 往往是要求实现某种计算 比如两数相除 实现的过程中会有所限定 比如不允许乘法等等 这类题目首先要注意计算过程中本身的特殊情况 比如求相除 则必须首先反映过来除数不能为0 其次要记得考虑负数的情况 如果计算范围不单单是整
  • 简单的matlab分布式计算

    matlab的分布式计算可以理解为一台机器作为client 主控机 其他的机器分别作为计算的结点 要由client进行控制和操作 如果把单机上的 m文件直接放到client运行 是不会产生分布式计算的效果的 只相当于在主控机进行了计算 而其
  • 【JavaScript】defer和async的区别

    转载自 https segmentfault com q 1010000000640869 先来试个一句话解释仨 当浏览器碰到 script 脚本的时候 没有 defer 或 async 浏览器会立即加载并执行指定的脚本 立即 指的是在渲染
  • 华为性格测试通关指南

    一 华为性格测试关键要点 前后一致 积极乐观 吃苦耐劳 二 华为喜欢的人才性格画像 服从领导 能够按部就班按时完成工作 能够死命干活 没有太多性格 比如有野心 好胜 想当领导 坚持己见 坚持自己做事方式 别人有错当面硬刚这些类似的性格 喜欢
  • java实现航班信息查询管理系统

    一 任务概述 二 目录结构 三 详细代码 JDBC工具类模块 package com kaikeba task task010404 utils import com alibaba druid pool DruidDataSource i
  • python打包编译成pyd或者,Python .py生成.pyd文件并打包.exe 的注意事项说明

    最近用python写了一个小程序 想发布出去让人试用又不想暴露源码 搜索了一下发现将py文件编译成pyd文件就能达到目的 转换过程很简单 但是在调用pyd文件并且打包为单个exe文件的时候遇到一个坑 搞了一天才解决 在这里分享一下 首先安装
  • 使用post请求建立长连接实现sse,接收后端主动发来的消息,实现chat-gpt的弹字效果,EventSource的应用

    每日鸡汤 每个你想要学习的瞬间都是未来的你向自己求救 最近在做一个chat相关的功能 然后由于接口返回特别特别慢 所以需要搞一个慢慢等待的效果 就是接口一个单词一个单词的返回 然后前端收到一个展示一个 提升用户体验 说实话我是第一次做这类需
  • 消费者不用手机凭一张脸就能完成支付和转账

    以前出门要看钱包交易完成的节点 而商业活动发生于诸多场景中 商家若想为消费者提供更好的服务 就必须更深入地了解消费人群 赢得消费者的青睐 蜻蜓二代推出的AI刷脸会员功能 帮助商家完成顾客的会员一键开卡 不涉及填表 确认 签字等繁琐的流程 只
  • ETL为什么经常变成ELT甚至LET?

    ETL是将数据从来源端经过清洗 extract 转换 transform 加载 load 至目的端的过程 正常的 ETL 过程应当是 E T L 这三个步骤逐步进行 也就是先清洗转换之后再加载进目标端 通常是数据库 最后在数据库中的只是合理
  • Hive(7) Hive的DML语句-Hive的数据库和表的修改和删除

    Hive 3 DML语句 DML 数据操作语句 导入数据 直接从文件向表中导入数据 load data load data local inpath lt 文件路径 gt overwrite into table lt 表名 gt part