将文件导入Hive表中。
语法:
hive>load data [local] inpath 'filepath' [overwrite] into table tablename [partition (partcol1=val1, ...)];
关键字说明:
(1)local:表示从本地加载数据到Hive表;否则从HDFS加载数据到HIve表。
(2)overwrite:表示覆盖表中已有数据,否则表示追加。
(3)partition:表示上传到指定分区,若目标是分区表则需要指定分区。
如:
-- 先创建一张表:
create table student(
id int,
name string
)
row format delimited fields terminated by '\t';
-- 加载本地文件到hive:
load data local inpath '/opt/module/hive/datas/student.txt' into table student;
-- 加载HDFS文件到hive:
--上传文件到HDFDS:
hadoop fs -put /opt/module/hive/datas/student.txt /user/liaoyanxia
-- 加载HDFS上数据,导入完成后去HDFS上查看文件是否存在:
load data inpath '/user/liaoyanxia/student.txt' into table student;
-- 加载数据覆盖表中已有数据:
-- 上传文件到HDFS:
dfs -put /opt/module/datas/student.txt /user/liaoyanxia;
-- 加载数据覆盖表中已有数据:
load data inpath '/user/liaoyanxia/student.txt' overwrite into table student;
语法:
insert (into | overwrite) table tablename [partition (partcal1=val1, ...)] select_statement;
关键字说明:
(1)into:将结果追加到目标表。
(2)overwrite:用结果覆盖原有数据。
如:
-- 先创建一张表:
create table student1(
id int,
name string
)
row format delimited fields terminated by '\t';
--根据查询结果插入数据:
insert overwrite table student1 select id,name from student;
语法:
insert (into | overwrite) table tablename [partition (partcal1=[val1], ...)] values values_row [(index,'values_row'), ...];
如:
insert into table student1 values(1,'wangwu'),(2,'zhaoliu');
语法:
insert overwrite [local] directory directory [row format roe_format] [stored ass file_format] select_statement;
如:
insert overwrite local directory '/opt/module/hive/datas/student' row format serde 'org.apache.hadoop.hive.serde2.JsonSerDe' select id,name from student;
Export到此处语句将表的数据和元数据信息导出到HDFS路径;Import将Expot导出的内容导入Hive,恢复表中的数据和元数据。
Export和Import用于两个Hive实例间的数据迁移。
语法:
-- 导出:
export table tablename to 'export_target_path';
-- 导入:
import [external] table new_or_original_tablename from 'source_path' [location 'import_target_path'];
如:
-- 导出:
export table default.student to '/user/hive/warehouse/export/student';
-- 导入:
import table student2 from 'user/hive/warehouse/export/student';