DML
1.Load
Load语句可将文件导入到Hive表中。
sql
hive>
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)];
关键字说明:
local
:表示从本地加载数据到Hive表;否则从HDFS加载数据到Hive表。overwrite
:表示覆盖表中已有数据,否则表示追加。partition
:表示上传到指定分区,若目标是分区表,需指定分区。
1.加载本地文件到hive
本地文件路径:
执行load语句:
load data local inpath '/opt/module/hive-3.1.3/datas/student.txt' into table student;
查询数据(select * from student):
2.加载数据覆盖表中已有的数据
load data local inpath '/opt/module/hive-3.1.3/datas/student.txt' overwrite into table student;
3.加载HDFS文件到hive
上传文件到HDF根目录:
执行加载文件语句:
load data inpath '/student.txt' into table student;
从本地加载是copy的过程,从HDFS加载是move的过程。
2.Insert
1.将查询结果插入表中
INSERT (INTO | OVERWRITE) TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement;
INTO
:将结果追加到目标表OVERWRITE
:用结果覆盖原有数据
(1)新建一张表
sql
hive (default)>
create table student1(
id int,
name string
)
row format delimited fields terminated by '\t';
(2)根据查询结果插入数据
sql
hive (default)> insert overwrite table student2
select
id,
name
from student;
2.将给定Values插入表中
INSERT (INTO | OVERWRITE) TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]
sql
hive (default)> insert into table student1 values(1,'wangwu'),(2,'zhaoliu');
3.将查询结果写入目标路径
INSERT OVERWRITE [LOCAL] DIRECTORY directory [ROW FORMAT row_format] [STORED AS file_format] select_statement;
sql
insert overwrite local directory '/opt/module/datas/student' ROW FORMAT S ERDE 'org.apache.hadoop.hive.serde2.JsonSerDe'
select id,name from student;
3.Export&Import
Export
导出语句可将表的数据和元数据信息一并导出到HDFS的路径Import
可将Export
导出的内容导入Hive,表的数据和元数据信息都会恢复。Export
和Import
可用于两个Hive实例之间的数据迁移。
sql
--导出
EXPORT TABLE tablename TO 'export_target_path'
--导入
IMPORT [EXTERNAL] TABLE new_or_original_tablename FROM 'source_path' [LOCATION 'import_target_path']
示例:
sql
--导出
hive>
export table default.student to '/user/hive/warehouse/export/student';
sql
--导入
hive>
import table student2 from '/user/hive/warehouse/export/student';