Hive的DML数据操作

清泓
2022-06-02 / 0 评论 / 916 阅读 / 3215字 / 正在检测是否收录...

数据导入


Load导入

将文件中的数据导入(Load)到 Hive 表中
语法:

hive > load data [local] inpath '数据路径' [overwrite] into table table_name [partition (partcoll=vall,...)];

参数详解:
load data:加载数据

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

inpath:表示加载数据的路径

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

into table:表示加载到具体哪张表

实例:
1.无分区----加载本地路径数据到表 (overwrite重写)

hive > load data local inpath '/data/load_data.txt' overwrite into table tbl_test;

2.有分区----加载本地路径数据到表 (overwrite重写)

hive > load data local inpath '/data/load_data.txt' overwrite into tbl_test partition (date='20201212');

3.无分区----加载HDFS路径数据到表 (与本地相比,少一个local)

hive > load data inpath '/tmp/data.txt' overwrite into table tbl_test;

4.有分区----加载HDFS路径数据到表 (overwrite重写)

hive > load data inpath '/tmp/data.txt' overwrite into table tbl_test partition (date='20201212');

Insert导入

向表中插入数据(Insert)
1.基本插入数据

hive > insert into table  table_name partition(date='20201212') values(10001,'test');

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

hive > insert overwrite table table_name partition(date='20201212')
             select id, name from student where date='20201212';

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

hive > from student
              insert overwrite table table_name partition(date='20201212')
              select id, name where date='20201212'
              insert overwrite table table_name partition(month='201706')
              select id, name where date='20201212';

As Select导入

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

hive > create table table_name(id int) as select id from table_names;

Location导入

创建表时通过Location指定加载数据路径
语法:

hive > create table table_name(id int) location '集群数据路径';

Import导入

向表中装载数据(import)
注意:先用export导出后,再将数据导入
语法:

hive > import table table_name partition(date='20201212') from '/user/hive/warehouse/export/table_name';

 

数据导出


Insert导出

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

hive > insert overwrite local directory '/datas/export/file' select * from table_name;

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

hive > insert overwrite local directory '/datas/export/file' 
              row format delimited fields terminated by '\t' 
              select * from table_name;

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

hive > insert overwrite directory '/datas/export/file'
             row format delimited fields terminated by '\t' 
             select * from student;

Hadoop命令导出

注意:该命令在hive命令行执行

hive > dfs -get /user/hive/warehouse/test/date=20220505/000000_0
      /opt/module/datas/export/test.txt;

Hive Shell命令导出

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

bin/hive -e 'select * from default.test;' > /opt/module/datas/export/test.txt;

Export导出到HDFS

hive > export table default.test to '/user/hive/warehouse/export/test';

清除数据(Truncate)

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

hive > truncate table table_name;
1

打赏

评论

博主关闭了当前页面的评论