工作中,根据场景不同,可能建表方式不同,有时候用like、as方式建表会达到事半功倍的效果,下面是小白总结的三种创建表的方式。
目录
1、使用create命令创建一个新表
2、使用like创建表
3、使用as创建表
1、使用create命令创建一个新表
create命令建表,参数不同,也有些许的区别,下面来看一下,创建一个带有分区的表,分区按天,取名为d
可以看到分区是用partitioned by方式,指定分区的参数,另外下面的stored as是用来指定存储的方式,这里不止有orc方式,也可以用txtfile方式,但是orc方式是对数据进行压缩的,占很少内存,现在大多数选择这种方式存储,不过也有一些情景下使用txtfile,并且该方式的数据是行式存储,而orc是列式存储。
当然,也可以不创建分区表,那么去掉partitioned的指定就可以。
USE database;
CREATE TABLE tablename(
orderid bigint comment '订单号',
uid string comment '用户id',
orderdate date comment '预订日期'
)
COMMENT 'table comment'
PARTITIONED BY(d STRING COMMENT 'date')
STORED AS ORC;
2、使用like创建表
这种方式实质就是复制表结构。在工作中,如果你有一个已经存在的表,现在想创建一个一模一样的表,这个时候这个方法就很省时省力了。复制时,只会复制表结构,不会复制表中属性值(包扣表的分区以及存储格式之类的)
use database;
create table tablename1 like tablename;
3、使用as创建表
这种方式是把一张表的某些字段抽取出来,创建成一张新表。
这种方式需要注意以下几点:
1.as只会复制属性以及属性值到新的表中
2.使用as创建的表,并不会带原表的分区(分区丢失),并且分区的字段变成一个正常的字段,没有分区的效用,还有一些字段的约束等(可以通过describe formatted查看)
use database;
create table tablename1 as
select * from tablename
where d = '2019-01-01'
;
以上就是三种建表方式啦,各有各的好处吧,可以视情况而定,而不是一直用第一种建表方式~