一、普通建表方式
create table stu_info(
id int,
name string
)ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
载入数据
load data local inpath '/data/hivetest/stu_info_local' into table stu_info;
load data inpath '/data/hivetest/stu_info_local' into table stu_info;
另外的方式
官网
![7aa0f8d7bf96bf0bc660dcd9d57850f2.png](https://img-blog.csdnimg.cn/img_convert/7aa0f8d7bf96bf0bc660dcd9d57850f2.png)
![a3841ff6726bd27018d4d22dbda0c90d.png](https://img-blog.csdnimg.cn/img_convert/a3841ff6726bd27018d4d22dbda0c90d.png)
二、子查询方式建表
![e8f261f641235dae1afe03d4df79a3f8.png](https://img-blog.csdnimg.cn/img_convert/e8f261f641235dae1afe03d4df79a3f8.png)
我们练习下
创建一个练习库
![e8564f319cc6b7d500bd51d1f65cfe96.png](https://img-blog.csdnimg.cn/img_convert/e8564f319cc6b7d500bd51d1f65cfe96.png)
创建一个普通表
create table normal(
id int,
name string
)ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
![5c68b473c40439d33b0e94866b9e172d.png](https://img-blog.csdnimg.cn/img_convert/5c68b473c40439d33b0e94866b9e172d.png)
我们装载数据
load data local inpath '/data/hivetest/stu_info_two' into table normal;
![b1e4204c04257c833807f48d855d282e.png](https://img-blog.csdnimg.cn/img_convert/b1e4204c04257c833807f48d855d282e.png)
我们看数据是存在的
![81d6409b4c61a6c971dea79bf66a5e2b.png](https://img-blog.csdnimg.cn/img_convert/81d6409b4c61a6c971dea79bf66a5e2b.png)
我们利用子查询生成新表
create table normal_zcx_t as select * from normal;
![5a2d1e3cc453ae8b56ee505a6cc253f6.png](https://img-blog.csdnimg.cn/img_convert/5a2d1e3cc453ae8b56ee505a6cc253f6.png)
实际在跑MapReduce
![287d8aacfb52a26e345de09fd24a283c.png](https://img-blog.csdnimg.cn/img_convert/287d8aacfb52a26e345de09fd24a283c.png)
我们查看表和数据
![92b99a88209a15862f3b1402ebd882ea.png](https://img-blog.csdnimg.cn/img_convert/92b99a88209a15862f3b1402ebd882ea.png)
![5db6293e116f2c3d9c2b1c9d99bf95ec.png](https://img-blog.csdnimg.cn/img_convert/5db6293e116f2c3d9c2b1c9d99bf95ec.png)
我们可以看到元数据也存在
![85e80538c05859ee750ed59d8774cfca.png](https://img-blog.csdnimg.cn/img_convert/85e80538c05859ee750ed59d8774cfca.png)
表结构也一样
![c24c065f2d8aa1ed6e0f9f232da8afd5.png](https://img-blog.csdnimg.cn/img_convert/c24c065f2d8aa1ed6e0f9f232da8afd5.png)
我们再看下HDFS
![805af4a44fe2c194b2dbae73c9efbeaf.png](https://img-blog.csdnimg.cn/img_convert/805af4a44fe2c194b2dbae73c9efbeaf.png)
![cba949f16844523f4b950cc8250268b1.png](https://img-blog.csdnimg.cn/img_convert/cba949f16844523f4b950cc8250268b1.png)
![54d959a058ee24b650e27ea3d04d35a4.png](https://img-blog.csdnimg.cn/img_convert/54d959a058ee24b650e27ea3d04d35a4.png)
所以子查询将查询的数据和表的结构赋予一张新的表
三、Like建表
![371147cf11edbfd50f59b7f6434feac3.png](https://img-blog.csdnimg.cn/img_convert/371147cf11edbfd50f59b7f6434feac3.png)
我们建表
create table normal_like_t like normal;
![1fc67233b30f303778fb4d7c71e4db24.png](https://img-blog.csdnimg.cn/img_convert/1fc67233b30f303778fb4d7c71e4db24.png)
只有表结构,没有数据,但是相对于子查询没有MapReduce执行,速度会快很多。
元数据和HDFS都有
![03d9a494df35e8cf426ae55ee318d985.png](https://img-blog.csdnimg.cn/img_convert/03d9a494df35e8cf426ae55ee318d985.png)
![839e95b3fa4245f15f130fe2f6079093.png](https://img-blog.csdnimg.cn/img_convert/839e95b3fa4245f15f130fe2f6079093.png)
四、数据共享
我们重新创建一个数据库
![8b46828fd7d29e82bd50f92419354e41.png](https://img-blog.csdnimg.cn/img_convert/8b46828fd7d29e82bd50f92419354e41.png)
创建员工表
![1c83c3b9efc7396b2580ddd738647b65.png](https://img-blog.csdnimg.cn/img_convert/1c83c3b9efc7396b2580ddd738647b65.png)
创建部门表
![268b8c856b4b679625b1cc49da8b54d3.png](https://img-blog.csdnimg.cn/img_convert/268b8c856b4b679625b1cc49da8b54d3.png)
导入数据
![78e56a5277231bd2f4c4b6f67e51798d.png](https://img-blog.csdnimg.cn/img_convert/78e56a5277231bd2f4c4b6f67e51798d.png)
![44d4cad2b61252e5f51ad4a5c0c47f05.png](https://img-blog.csdnimg.cn/img_convert/44d4cad2b61252e5f51ad4a5c0c47f05.png)
我们创建表引用另外一个表的文件,比如引入我们的dept表的文件
![520fdbbeff16d0e05ff8430491cb974f.png](https://img-blog.csdnimg.cn/img_convert/520fdbbeff16d0e05ff8430491cb974f.png)
![f2d3b6a766bd80b798f52d0bb2360829.png](https://img-blog.csdnimg.cn/img_convert/f2d3b6a766bd80b798f52d0bb2360829.png)
可以看到表
![3907dd4707bee91bace21a6f891d6f7b.png](https://img-blog.csdnimg.cn/img_convert/3907dd4707bee91bace21a6f891d6f7b.png)
元数据也有
![8d1e7f80fece643768b23673f1df53f9.png](https://img-blog.csdnimg.cn/img_convert/8d1e7f80fece643768b23673f1df53f9.png)
数据也有
![66ca0aa8ea171d763fc079bffe15d9c9.png](https://img-blog.csdnimg.cn/img_convert/66ca0aa8ea171d763fc079bffe15d9c9.png)
我们把dept_yr数据清空,会发现dept的数据竟然也没有了
![83cbeca3d0eb93410ddbe760fcc58f03.png](https://img-blog.csdnimg.cn/img_convert/83cbeca3d0eb93410ddbe760fcc58f03.png)
那我们重新加载数据呢?
![7bd34fb45d912bb066f73fdc26491897.png](https://img-blog.csdnimg.cn/img_convert/7bd34fb45d912bb066f73fdc26491897.png)
这时候我们明白了,它俩在一起关联的,添加和清除在一起。
如果删除的话 drop table dept_yr;数据还是清空
![d1bf08a281fd7d5af9fab2fef9be0faf.png](https://img-blog.csdnimg.cn/img_convert/d1bf08a281fd7d5af9fab2fef9be0faf.png)
所以这种方式建表,他们是互相影响的。
数据共享一份数据,删除的时候就把共享的数据删除
删除表也会把元数据数据删除,清除HDFS上的文件
建表中,这有两个关键字
![cebd9f37b8e909d87c16d4a91963282a.png](https://img-blog.csdnimg.cn/img_convert/cebd9f37b8e909d87c16d4a91963282a.png)
如果我们不加这两个关键字,表默认是管理表
![cf4709635cc7e10dda06f4e196d6bc2f.png](https://img-blog.csdnimg.cn/img_convert/cf4709635cc7e10dda06f4e196d6bc2f.png)
我们先看TEMPORARY
我们创建
![99fdf74546cb101a7ff90c9e18e2a656.png](https://img-blog.csdnimg.cn/img_convert/99fdf74546cb101a7ff90c9e18e2a656.png)
我们导入数据
![96f1c9d5b595578cc19f4f9aa908a80e.png](https://img-blog.csdnimg.cn/img_convert/96f1c9d5b595578cc19f4f9aa908a80e.png)
去查询元数据,发现没有信息
![43970fcbc2bd423a87199fea6c3d3a85.png](https://img-blog.csdnimg.cn/img_convert/43970fcbc2bd423a87199fea6c3d3a85.png)
用desc formatted查看,信息是有的
![c30f469a5acc834ef193744943ac652f.png](https://img-blog.csdnimg.cn/img_convert/c30f469a5acc834ef193744943ac652f.png)
我们看其中的数据存放路径
![0958a1e1643a18bb73493ad67b333f74.png](https://img-blog.csdnimg.cn/img_convert/0958a1e1643a18bb73493ad67b333f74.png)
查看一下HDFS
![4cbb10e3860acf186291095ff284c08c.png](https://img-blog.csdnimg.cn/img_convert/4cbb10e3860acf186291095ff284c08c.png)
这就是临时表的一些特点
如果关闭的话,就会自动删除临时表,也可以手动删除,常作为临时结果使用。
如果用location+temporary共享数据会发生什么呢?可以做个练习。(1)关闭客户端对原始数据的影响?(2)删除临时表对原始数据的影响?(3)如果是清空临时表呢?
我们创建EXTERNAL表
![11f48925469698205093b6b3f82a1d4b.png](https://img-blog.csdnimg.cn/img_convert/11f48925469698205093b6b3f82a1d4b.png)
![89c45e691e2706e83d0503bcf8d16b67.png](https://img-blog.csdnimg.cn/img_convert/89c45e691e2706e83d0503bcf8d16b67.png)
我们看元数据
![dd0f1408777c6765abf5ea50407d483d.png](https://img-blog.csdnimg.cn/img_convert/dd0f1408777c6765abf5ea50407d483d.png)
Formatted
![4c819076c7a474925c3b2731e5f25084.png](https://img-blog.csdnimg.cn/img_convert/4c819076c7a474925c3b2731e5f25084.png)
我们再dept中加载数据
![ef26742b50dd6222df4a91ff28073195.png](https://img-blog.csdnimg.cn/img_convert/ef26742b50dd6222df4a91ff28073195.png)
发现数据在外部表也是有的
![3843f840f3f19d3db1f442baf3dea494.png](https://img-blog.csdnimg.cn/img_convert/3843f840f3f19d3db1f442baf3dea494.png)
如果我们清空外部表,就会报错
FAILED: SemanticException [Error 10146]: Cannot truncate non-managed table dept_ext.
![27c8075e7720e48a6e634bb2e37777b7.png](https://img-blog.csdnimg.cn/img_convert/27c8075e7720e48a6e634bb2e37777b7.png)
那我们删除外部表呢?不会对原始数据产生影响
![9138e2dffe2a7c2525d362005286d27a.png](https://img-blog.csdnimg.cn/img_convert/9138e2dffe2a7c2525d362005286d27a.png)
元数据也没了
![4108985c832c1492c9c73575d7b34e99.png](https://img-blog.csdnimg.cn/img_convert/4108985c832c1492c9c73575d7b34e99.png)
练习:如果不使用location,直接创建的话,删除表会怎么样?
总结:删除表时,内部表元数据和数据一起删除,而外部表只删除元数据,不会删除数据,以及HDFS上表对应的目录及文件都不会删除。