【Hive】(六)Hive DML 数据操纵语言详解

简介: 【Hive】(六)Hive DML 数据操纵语言详解

文章目录


一、数据导入

1.1 向表中装载数据(Load)

1.2 通过查询语句向表中插入数据(Insert)

1.3 查询语句中创建表并加载数据(As Select)

1.4 创建表时通过Location指定加载数据路径

1.5 Import数据到指定Hive表中


二、数据导出

2.1 Insert导出

2.2 Hadoop命令导出到本地

2.3 Hive Shell 命令导出

2.4 Export导出到HDFS上


三、清除表中数据(Truncate)


一、数据导入


1.1 向表中装载数据(Load)


1.语法

hive> load data [local] inpath '/opt/module/datas/student.txt' overwrite | into table student [partition (partcol1=val1,…)];


load data:表示加载数据

local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表

inpath:表示加载数据的路径

overwrite:表示覆盖表中已有数据,否则表示追加

into table:表示加载到哪张表

student:表示具体的表

partition:表示上传到指定分区


2.实操案例


(0)创建一张表

hive (default)> create table student(id string, name string) row format delimited fields terminated by '\t';


(1)加载本地文件到hive

hive (default)> load data local inpath '/opt/module/datas/student.txt' into table default.student;


(2)加载HDFS文件到hive中


上传文件到HDFS

hive (default)> dfs -put /opt/module/datas/student.txt /user/atguigu/hive;


加载HDFS上数据

hive (default)> load data inpath '/user/atguigu/hive/student.txt' into table default.student;


(3)加载数据覆盖表中已有的数据

上传文件到HDFS

hive (default)> dfs -put /opt/module/datas/student.txt /user/atguigu/hive;


加载数据覆盖表中已有的数据

hive (default)> load data inpath '/user/atguigu/hive/student.txt' overwrite into table default.student;


1.2 通过查询语句向表中插入数据(Insert)


1.创建一张分区表

hive (default)> create table student(id int, name string) partitioned by (month string) row format delimited fields terminated by '\t';


2.基本插入数据

hive (default)> insert into table  student partition(month='201709') values(1,'wangwu');


3.基本模式插入(根据单张表查询结果)

hive (default)> insert overwrite table student partition(month='201708')
             select id, name from student where month='201709';


4.多插入模式(根据多张表查询结果)

hive (default)> from student
              insert overwrite table student partition(month='201707')
              select id, name where month='201709'
              insert overwrite table student partition(month='201706')
              select id, name where month='201709';


1.3 查询语句中创建表并加载数据(As Select)


根据查询结果创建表(查询的结果会添加到新创建的表中)

create table if not exists student3
as select id, name from student;


1.4 创建表时通过Location指定加载数据路径


1.创建表,并指定在hdfs上的位置

hive (default)> create table if not exists student5(
              id int, name string
              )
              row format delimited fields terminated by '\t'
              location '/user/hive/warehouse/student5';


2.上传数据到hdfs上

hive (default)> dfs -put /opt/module/datas/student.txt
/user/hive/warehouse/student5;


3.查询数据

hive (default)> select * from student5;


1.5 Import数据到指定Hive表中


注意:先用export导出后,再将数据导入。

hive (default)> import table student2 partition(month='201709') from
 '/user/hive/warehouse/export/student';


二、数据导出


2.1 Insert导出


1.将查询的结果导出到本地

hive (default)> insert overwrite local directory '/opt/module/datas/export/student'
            select * from student;


2.将查询的结果格式化导出到本地

hive(default)>insert overwrite local directory '/opt/module/datas/export/student1'
           ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'             
           select * from student;


3.将查询的结果导出到HDFS上(没有local)

hive (default)> insert overwrite directory '/user/atguigu/student2'
             ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
             select * from student;


2.2 Hadoop命令导出到本地

hive (default)> dfs -get /user/hive/warehouse/student/month=201709/000000_0
/opt/module/datas/export/student3.txt;


2.3 Hive Shell 命令导出


基本语法:(hive -f/-e 执行语句或者脚本 > file)

[atguigu@hadoop102 hive]$ bin/hive -e 'select * from default.student;' >
 /opt/module/datas/export/student4.txt;


2.4 Export导出到HDFS上

(defahiveult)> export table default.student to
 '/user/hive/warehouse/export/student';


三、清除表中数据(Truncate)


注意:Truncate只能删除管理表,不能删除外部表中数据

hive (default)> truncate table student;



目录
相关文章
|
4月前
|
SQL 分布式计算 Hadoop
创建hive表并关联数据
创建hive表并关联数据
60 0
|
4月前
|
SQL 存储 大数据
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
216 0
|
1月前
|
SQL 物联网 数据处理
"颠覆传统,Hive SQL与Flink激情碰撞!解锁流批一体数据处理新纪元,让数据决策力瞬间爆表,你准备好了吗?"
【8月更文挑战第9天】数据时代,实时性和准确性至关重要。传统上,批处理与流处理各司其职,但Apache Flink打破了这一界限,尤其Flink与Hive SQL的结合,开创了流批一体的数据处理新时代。这不仅简化了数据处理流程,还极大提升了效率和灵活性。例如,通过Flink SQL,可以轻松实现流数据与批数据的融合分析,无需在两者间切换。这种融合不仅降低了技术门槛,还为企业提供了更强大的数据支持,无论是在金融、电商还是物联网领域,都将发挥巨大作用。
39 6
|
23天前
|
SQL 关系型数据库 HIVE
实时计算 Flink版产品使用问题之如何将PostgreSQL数据实时入库Hive并实现断点续传
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
23天前
|
SQL 分布式计算 数据处理
实时计算 Flink版产品使用问题之怎么将数据从Hive表中读取并写入到另一个Hive表中
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1月前
|
SQL 存储 分布式计算
|
1月前
|
SQL 存储 监控
Hive 插入大量数据
【8月更文挑战第15天】
|
2月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之从mysql读数据写到hive报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
2月前
|
SQL DataWorks 监控
DataWorks产品使用合集之同步数据到Hive时,如何使用业务字段作为分区键
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。