<4> hive 执行命令方式,数据加载

本文详细介绍了Hive中执行SQL命令的各种方式,包括命令行、静默模式、详细模式及通过文件执行,同时深入解析了数据加载的方法,如创建表时加载、本地数据加载、HDFS数据加载等,特别关注了分区表的数据加载流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hive执行命令的方式
hive -e "hql" 命令行执行hsql
hive -e "select * from mydb2.c1"
hive -S 静默模式,控制台不输出Logging信息
hive -S -e "select * from mydb2.c1"
hive -v 详细模式,会把执行的sql打印出来
hive -v -e "select * from mydb2.c1"
hive -f "path" 执行文件
hive -f "/home/lz/createtable.txt"
hive -i 执行初始化xx自己实现

list jar;显示缓存了哪些jar包
list file;显示缓存了哪些文件

hive 数据加载
创建表时加载
create table c3 as select * from c1;
创建表时指定数据位置
create table c4(id int,name string) location 'path';
本地数据加载
load data local inpath 'path' overwrite into table c5;
加载hdfs数据
load data inpath 'path' overwrite into table c6;
查询语句加载数据
create table c4 like c2;(复制表结构)
1.insert into/overwrite table c4
select id,name
from c2
where id=1;
2.from c2
insert into/overwrite c5
select id,name
where id=2;

注意:字段对于和关系型数据库不一样的
hive在加载数据的时候不做字段检查和字段类型检查的
在查询的时候才做检查

分区表加载数据
同表加载数据一样,只是需要指定分区分区
注意:数据存放的路径层次要和表的分区一致
如果分区表没有新增分区,即使目标路径下已经有数据了,但依然查不到数据

本地加载数据
create table if not exists d1(
id int,
name string,
age int
)
partitioned by(dt string)
row format delimited fields terminated by ','
stored as textfile;

1,tom,24
2,jack,25
3,lc,27
4,ljc,28
load data local inpath 'path' overwrite/into table d1 partition(dt='20180416');
加载hdfs数据
load data inpath 'path' overwrite/into table tablename partition(dt='20180416');
由查询语句加载数据
create table if not exists d3(
id int,
name string
)
partitioned by(dt string)
row format delimited fields terminated by ','
stored as textfile;
insert overwrite table d3 partition(dt='20180815') select name,id from d1;
insert overwrite table d2 partition(dt='20180815') select id,name,age from d1;
注意:由查询语句加载数据,字段必须一样多,d2表三个字段,那么select d1表的三个字段才能插入

hive数据加载需要注意的问题
1.分隔符问题,分隔符默认是单个字符(因为默认只取第一个字符)
2.load数据字段类型不能互相转化是,查询返回NULL
create table if not exists e1(id int,name string) row format delimited fields terminated by ',' stored as textfile;
1,tom
2,jack
load data local inpath '/home/lz/e1.txt' overwrite into table e1;
create table e2 like e1;
load data local inpath 'path' overwrite into table e2;
(这个查询那么字段为NULL,string转不了int)
3.select查询插入,字段类型不能互相转化时,插入数据为NULL
insert into table e2 select name,id from e1;
(这个id字段为NULL,string转不了int)
4.select查询插入分区数据,字段值顺序要预表中字段顺序一致,名称可不一致
5.外部分区表需要添加分区才能看到数据(alter table add partition(xx=xx))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值