前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >hive只复制表结构不复制表数据

hive只复制表结构不复制表数据

作者头像
chimchim
发布2023-10-17 08:53:24
发布2023-10-17 08:53:24
40800
代码可运行
举报
文章被收录于专栏:chimchim要努力变强啊
运行总次数:0
代码可运行

一、背景

有一张ori_table,想新建一张表new_table,保持跟ori_table一样的表结构,但是不复制ori_table的数据。

二、准备测试数据

1.建表

代码语言:javascript
代码运行次数:0
复制
create table ori_table (
id   bigint,
col1 string,
col2 double
)comment '无分区原始表'
stored as orc;


create table ori_table_partition (
id   bigint,
col1 string,
col2 double
)comment '有分区原始表'
partitioned by (dt string)
stored as orc;

2.造测试数据

代码语言:javascript
代码运行次数:0
复制
insert into ori_table values (1,'哈哈',10.02);
insert into ori_table values (2,'嘿嘿',20.06);
insert into ori_table values (3,'嘻嘻',30.08);

insert into ori_table_partition partition(dt='1') values (1,'哈哈',10.02);
insert into ori_table_partition partition(dt='2') values (2,'嘿嘿',20.06);
insert into ori_table_partition partition(dt='3') values (3,'嘻嘻',30.08);

三、操作

有2种办法

1.CTAS

(1).无分区表测试
代码语言:javascript
代码运行次数:0
复制
--复制与ori_table表结构及表数据都一致的语句

create table new_table as select * from ori_table;


--只复制与ori_table表结构的语句
create table new_table as select * from ori_table where 1=0;

show create table new_table;   --执行看一下效果

select * from new_table;  --执行看一下数据量

由此得出结论,无分区表使用该语句可以满足需求!

(2).分区表测试
代码语言:javascript
代码运行次数:0
复制
--复制与ori_table_partition表结构及表数据都一致的语句

create table new_table_partition as select * from ori_table_partition;


--只复制与ori_table表结构的语句
create table new_table_partition as select * from ori_table_partition where 1=0;

show create table new_table_partition;     --执行看一下效果

 这里看到表结构还是有些差异的,执行后将分区表建成了无分区表,分区字段创建成了普通字段。

select * from new_table_partition;   --执行看一下数据量

结论:

CTAS语法不适用于分区表

2.LIKE

(1).无分区表测试
代码语言:javascript
代码运行次数:0
复制
--只复制与ori_table表结构的语句
create table new_table_like like ori_table;

show create table new_table_like;  --执行看一下效果

select * from new_table_like;   --执行看一下数据量

(2).分区表测试
代码语言:javascript
代码运行次数:0
复制
--只复制与ori_table_partition表结构的语句
create table new_table_partition_like like ori_table_partition;

show create table new_table_partition_like; --执行看一下效果

 select * from new_table_partition_like;   --执行看一下数据量

结论:

LIKE语法适用于分区表及无分区表 

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、准备测试数据
    • 1.建表
    • 2.造测试数据
  • 三、操作
    • 1.CTAS
      • (1).无分区表测试
      • (2).分区表测试
    • 2.LIKE
      • (1).无分区表测试
      • (2).分区表测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档