dbeaver导出建表语句_Hive的导入导出和常用过滤语句的学习

数据的导入

  1. load data [local]

创建数据表

c0318407a667e540c86a2f3769dfb413.png

加载数据

load data local inpath '/data/hivetest/stu_info_two' into table stu_info;

94ff4362c6a80710d6e65e35122c85b7.png

加载HDFS数据,移动数据文件到表对应的目录

我们先清空数据truncate table stu_info;

16ed188fcaf5d53b90d1738e3f2626ef.png

将数据加载到HDFS上

hdfs dfs -put /data/hivetest/stu_info_local_format /hivetestdata/

b85f63d1b0e5d53951e6408ab92699dd.png

Hive中查看下

5dee6fba8d1024b9c99aa67e6b81deb5.png

然后加载数据

c9f3f9cf85330f8065c0c28450cbc48e.png
  1. load data + overwrite 覆盖数据

为了区分我们新创建数据库

16225f26ac60810c7dc4908e1fc232af.png
f3465876b7e40d27adc9814d5d9570e3.png
2e6742eafbb2664b154f5364ec2e9789.png

可以覆盖数据

f5d9bb932395430be64b053d7a755ce6.png

3、子查询 as select

create table tb_stu_as_test_stu as select * from stu_info;

适合数据查询结果的保存

62ac48f75ec4f24d5292b63e73274dae.png

4、insert 方式

插入数据的表必须要存在

我们创建新表

776f483e86e769bfc06374c75163d1e5.png
89e703689536b8d9b82ad140fee47905.png
f020cb0835de42a54321d99575533f38.png

我们如果再执行一遍,数据就会增多(追加)

b3bee7ba1623e09c38a2d0b018f47e86.png

执行覆盖(原先数据变了)

df6e5b032d1ba15e172e01db01641fe7.png

在关系型数据库插入一条数据

insert into table table_name(id,name) values(1,'test');

Hive也支持插入

insert into table hive_table_name(id,name) values(1,'test');

注意:这种方式适合数据非常小的情况下去使用,如果大数据量,避免这种操作,如果执行show tables会发现一个临时表values__tmp__table__1,说明SQL这种方式用在Hive中会用临时表过渡。

5、建表的时候用location指定数据文件的方式

数据的导出

官网

701e379eadc1da9fe64543242fe04dec.png
48eda3633bbb21ebe62cdcd0aa856160.png
0359a47ce52aaa238d08e1c39436ba2f.png
  1. INSERT OVERWRITE [LOCAL] DIRECTORY directory1 方式(local的方式和插入一样一个是本地一个是HDFS)

Insert overwrite local directory '/data/hivetest/export_local_stu_info' select * from stu_info;

8edbdb4063ea2f03924a45eb92f00a38.png

我们查看数据

494239c738c2ede62f77339b761e52ab.png

添加语句可以指定分隔符 ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '

语句:

Insert overwrite local directory '/data/hivetest/export_local_stu_info' ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' select * from stu_info;

5614d1ba62fa507c3a95432dc86a9bf5.png

数据有空格了

a984d0e5300001d42a3261d95463b700.png

如果不使用local的话就是将输入导入到HDFS中,就可以用hdfs命令下载文件了

  1. bin/hive -e 或者 -f + >> 或者 >

hive -e 'select * from db_import_export.stu_info' >> /data/hivetest/export_local_stu_info_1.txt;

893dd2064dd34a4f71705d327e2230cb.png
  1. 可以使用sqoop等工具

我们使用之前的数据库

a299c039006d219d67a6adc5840671f5.png

select * from emp where sal > 3000;

bb7e04ae6980f77b487b7aafa3b43b51.png

select * from emp limit 5;

03282fab32457d966f5abf381cfe5caf.png

select distinct deptno from emp;

e58bc38f5090cb256e9755b4a46b62a4.png

select * from emp where sal between 1300 and 3000;

d50afa4ef649d7413daa160e3d412b34.png

select * from emp where sal >=1000 and sal <= 3000;

3272d8d2a69637c8664ec2979485c5ed.png

select empno,ename from emp where comm is null;

7908d36395709e9d84529467c986f32e.png

select empno,ename from emp where comm is not null;

7a8da36536721b5b459f47a2ebc9b0d3.png

聚合函数

count()、max()、min()、sum()、avg()、group by

d46dcf430b2cd294da1d638230dbf6d1.png

如果我们加一个字段

select deptno,max(sal) from emp ;

有错误

74693875bd66fa1c114ae625e2202cf0.png

select中出现的字段,需要用聚合函数包裹或者放入group by当中

select deptno ,max(sal) from emp group by deptno;

select max(deptno) ,max(sal) from emp ;

4dcdf17683955e0a4021cee12827ef39.png
f0b7aa1e43c34c8bf083d1c1f0d21a32.png

join

left join 、right join、inner join(等值)、full join(全)

新创建一个库

13afb80bf4c2461a3d055bf0e854698f.png

创建两张表

54cdc6d6937e656456b6ce4dea0f36fd.png
7e0602b4e7cd8e6175bd87c86611c3b4.png
dea121f491dfd213cf7dcf77d29f1c7b.png

我们准备两个数据

3c5b5add30d2f1424f37b123d154074a.png
e036dbb7b27cd57a22160ed1fdf2b764.png
066ba3a30ccad43ec1660160d437e0d4.png

等值join

select a_test.id,a_test.name,b_test.id,b_test.adress from a a_test join b b_test on a_test.id=b_test.id;

215a50fbea8d7778d0a20587669f6a2b.png

左join,以左表为基准,没有匹配到的字段为NULL

select a_test.id,a_test.name,b_test.id,b_test.adress from a a_test left join b b_test on a_test.id=b_test.id;

ae9b525c91e3f9d7ce8c0a99c446b256.png

右join,以右表为基准,没有匹配到的字段为NULL

select a_test.id,a_test.name,b_test.id,b_test.adress from a a_test right join b b_test on a_test.id=b_test.id;

57ad19123ebd7058de4e89f998a02a7d.png

全join,所有的字段都会出现,没有匹配到的字段为NULL

select a_test.id,a_test.name,b_test.id,b_test.adress from a a_test full join b b_test on a_test.id=b_test.id;

5faf6300e68577214ae870461f667674.png

不写连接条件,两张表做笛卡尔积

select a_test.id,a_test.name,b_test.id,b_test.adress from a a_test join b b_test ;

7cf3c13642963e4b944064fe65951988.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值