hive 数据库 表 列(DDL)

hive outline

链接

数据库操作

select + as

这种语法效率非常低下(因为多次使用了union all)

select '安徽省' as province,
       '合肥市' as city
union all
select '安徽省',
       '芜湖市'
union all
select '安徽省',
       '安庆市';
create + like
create table s1 like student;

with q1 as (
           select s_id,
                  s_name,
                  s_sex
           from student
           where s_id = '07'
           )
insert overwrite table s1
select *
from q1;
查看数据库的存储路径
desc database hive_test; 

数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db

在这里插入图片描述

强制删除不为空数据库
drop database hive_test cascade;

表操作

查看表的类型(内部表、外部表)
desc formatted emp;
查看建表语句
show create table dept;
内部 外部表结构的转化

需求:将内部表转化为外部表

注意:(‘EXTERNAL’=‘TRUE’)和(‘EXTERNAL’=‘FALSE’)为固定写法,区分大小写!

1.修改外部表emp为内部表(emp为表名)

alter table emp set tblproperties ('EXTERNAL'='FALSE');

2.修改内部表emp为外部表

alter table emp set tblproperties ('EXTERNAL'='TRUE');
删除表 drop
  1. 可以删除内部表,也可以删除外部表
  2. 外部表的原数据并没有删除,删除的是元数据
  3. 内部表的原数据、元数据都被删除
drop table [表名]; 

如果要删除外部表原数据和元数据

-- 先将外部表转换为内部表
 ALTER [外部表名] SET TBLPROPERTIES('EXTERNAL'='FALSE') ;
 -- 删除转换后的表
 DROP TABLE [表名];

注意:如果 hdfs 开启了回收站:

drop 删除的表数据是可以从回收站恢复的,表结构恢复不了,需要自己重新创建;

truncate 清空的表是不进回收站的,所以无法恢复 truncate 清空的表,所以 truncate 一定慎用

清除表数据 truncate
  1. truncate 只能清空内部表数据,不能清空外部表数据
  2. 清空表数据,表结构依然存在
truncate table emp;

注意:

  1. Truncate 只能删除内部表数据,不能删除外部表数据
  2. 清空表数据,表结构依然存在
更改表名
ALTER TABLE table_name RENAME TO new_table_name;
更改表属性
ALTER TABLE table_name SET TBLPROPERTIES (property_name = property_value, ... );
更改表注释
ALTER TABLE student SET TBLPROPERTIES ('comment' = "表注释");
更改表文件存储格式

该操作仅更改表元数据。现有数据的任何转换都必须在Hive之外进行

ALTER TABLE table_name  SET FILEFORMAT file_format;
更改表的存储位置路径
ALTER TABLE table_name SET LOCATION "new location";

列操作

添加列
-- 使用ADD COLUMNS,您可以将新列添加到现有列的末尾但在分区列之前
alter table [表名] add columns([列名1] [类型],[列名2] [类型]);
修改列数据类型

只能高级转低级 例如 decimal 转 string,不能 string 转 decimal

alter table [表名] change column [旧列名] [新列名] [类型];
-- 示例
alter table order_info change column skuid skuid string;
修改或添加列注释
-- 语法
alter table table_name change column column_name column_name data_type comment 'new_comment';
-- 示例
alter table order_info change column skuid skuid string comment 'skuid的新备注';
修改的名称
alter table order_info change column old_skuid new_skuid string

分区

链接

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值