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

本文详细介绍了Hive的DML语句,包括从文件导入数据、使用INSERT语句、通过查询创建新表、数据导出的各种方式如INSERT导出、Hadoop命令导出、Hive Shell导出、使用EXPORT和SQOOP,以及清空数据的操作。这些操作对于管理和维护Hive数据至关重要。
摘要由CSDN通过智能技术生成

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 只会清楚表中所有的行, 但是不会删除这张表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值