hiveDDL建表语句

从本地文件拷贝到数据库(load用法)
load data local inpath ‘/home/alwaysdazz/3.txt’ into table hadoop
如果文件已经在hdfs上,则load就变成了移动命令

即使自己使用hadoop命令 put到hdfs上的hadoop目录 hive也能查询出(既 select * from hadoop)可以查出在该目录下的所有表

如果随意上传一段字段,则数据依然可容易查询出,只不过是如果相对应的列没有数据则为null 多出列的字段则查询不出

hive有的表有俩种格式,
内部表mnangen类型表为默认表在不指定表类型时,即为mnangen类型,词表删除后则不在存在,即数据删除,元数据清除
————
外部表external类型表:此表称之为映射表,即只要有表关联在此映射表中,无论你的表如何移动,词映射表都能查询出来
建表的时候关联起来:(此表不会对系统的原文件进行改动)//关键字 external
create external haoop(id int,nanme String,)
row foamat delimited fields terminated by ‘\t’
location ‘/hive/4.txt’;//关联
此表删除后则不在存在,原表数据依旧存在,不对系统的任何表有影响,关于此外部表的元数据清除
————
中间表(即从别的表中提取某些列 放入此表中作为中间查询)
create table hadoop
as
select id name from hadoop01
sort by id;//并按照id字段排序 默认正序
————
静态分区:指先创建分区,然后将数据发送到指定的分区
动态分区:则是用数据内的字段自主进行分区
partition分区表(在建立表的时候设立分区则为静态分区,也可以自行创建分区名称则为动态分区)
create table hadoop(id int,name string)
partition by (mouth String)//建立分区 按月份
row format delimited fields terminated by ‘\t’
插入静态分区表
load data local inpath ‘/home/alwaysdazz/3.txt’
into table hadoop partition(mouth=1);将本地表3.txt插入到hadoop的mouth分区并编号为1
插入动态分区表
load data local inpath ‘home/alwaysdazz/3.txt’ into table hadoop partition(mouth);//此表则表示以mouth根据具体月份自行分区
插入动态分区和静态分区
load data local inpath ‘home/alwaysdazz/3.txt’ into table hadoop partition(mouth,day=‘30’);//此表则是以mouth为动态分区,day为静态分区
存入表内的结果为 每个月的 30
临时表temporary(不可以创建分区)
create temporary table hadoop (id int,name String); row format delimited fields terminated by ‘,’;//创建的临时表
CTAS
①create temporary table hadoop as select a,b from hadoop01 where a=1 and b=2 gorup by a,b;//在建立临时表的时候就从hadoop01表中拿取符合条件的数据

②insert into hadoop select a from hadoop01;//将表Hadoop01的a列字段插入到Hadoop的字段中 注意:再将Hadoop01表往临时表hadoop插入的时候字段数要对应。

临时表有那些特点?
即:
我对临时表的理解:在 Oracle 中创建一张表,这个表不用于其他的什么功能,主要用于自己的软件系统一些特有功能才用的,而当你用完之后表中的数据就没用了。 Oracle 的临时表创建之后基本不占用表空间,如果你没有指定临时表(包括临时表的索引)存放的表空的时候,你插入到临时表的数据是存放在 ORACLE 系统的临时表空间中( TEMP )。
当多表关联时,如果这些表大部分都是比较庞大,而你关联的时候发现其中的某一张或者某几张表关联之后得到的结果集非常小并且查询得到这个结果集的速度非常快,那么这个时候我考虑在 Oracle 中创建“临时表”
会话级的临时表因为这这个临时表中的数据和你的当前会话有关系,当你当前SESSION 不退出的情况下,临时表中的数据就还存在,而当你退出当前SESSION 的时候,临时表中的数据就全部没有了,当然这个时候你如果以另外一个SESSION 登陆的时候是看不到另外一个SESSION 中插入到临时表中的数据的。即两个不同的SESSION 所插入的数据是互不相干的。当某一个SESSION 退出之后临时表中的数据就被截断(truncate table ,即数据清空)了。

分区在表内是如何存的?
分区就是在表下面建立分区文件夹 文件内容则存放在分区文件夹下

查询分区内容
select *from hadoop where mouth=1;
查询hadoop表月份为1的内容

发布了124 篇原创文章 · 获赞 0 · 访问量 7869

猜你喜欢

转载自blog.csdn.net/weixin_43680708/article/details/86751886