mysql删除数据库返回值_从MySQL数据库中删除Hive元数据

本文介绍了如何从MySQL数据库中删除Hive元数据,包括创建一个存储过程P_TBL_DATA_DEL来实现这一操作。该过程涉及的步骤包括删除表属性、表信息、文件存储、序列化类配置等数据。
摘要由CSDN通过智能技术生成

Hive上所有元数据均保存在RDBMS中,所以删除RDBMS中的Hive的元数据,不会影响HDFS上的数据。目前针对MySQL数据库进行分析。

Hive在MySQL数据库中的相关元数据的关系图:

a581c2c7a3f97b988592159b92200e7f.png

解决办法

:先MySQL的库中建个存储过程P_TBL_DATA_DEL后,执行该存储过程就可以了。

存储过程脚本:

DELIMITER $$

DROP PROCEDURE IF EXISTS P_TBL_DATA_DEL$$

CREATE PROCEDURE P_TBL_DATA_DEL(

i_tbl_id                            int                    -- 表ID

,out

o_outcode                      integer                -- 输出代码

,out

o_outmsg                       varchar(500)           -- 输出信息

)

COMMENT '从MySQL数据库中删除Hive元数据'

label_pro:

BEGIN

/*======================================================================

* 交 易 名 称 : 从MySQL数据库中删除Hive元数据

* 功 能 概 述 :

* 输   入  表 :

* 输   出  表 :

*

* 文 件 名 称 : P_TBL_DATA_DEL.sql

* 设       计 :                         设计时间:

* 开       发 : wg                      开发时间: 2018-07-31 15:06

*

* 测 试 代 码 :  call P_TBL_DATA_DEL(i_tbl_id,@o_outcode,@o_outmsg);

*                 select @o_outcode,@o_outmsg;

======================================================================*/

-- =========================== 声明变量 ===========================

-- 自定义变量

DECLARE v_sd_id         int ;   -- 存储配置ID       SDS: 该表保存文件存储的基本信息

DECLARE v_part_id       int ;   -- 分区ID           PARTITIONS:该表存储表分区的基本信息

DECLARE v_cd_id         int ;   -- 表字段信息ID     COLUMNS_V2:该表存储表对应的字段信息

DECLARE v_serde_id      int ;   -- 序列化类配置ID   SERDES:该表存储序列化使用的类信息

DECLARE v_tbl_id        int ;   -- 表ID   用于接收输入参数

-- =========================== 声明异常 ===========================

DECLARE EXIT HANDLER FOR SQLEXCEPTION

BEGIN

ROLLBACK;

-- 发生异常后的返回值

set o_outcode =-1;

set o_outmsg ='failure';

end ;

-- =========================== 变量初始化 ===========================

-- 判断输入的表ID是否为NULL,并进行赋值

IF i_tbl_id IS NOT NULL then

SET v_tbl_id = i_tbl_id ;

ELSE  -- 否则默认赋值0

SET v_tbl_id = 0 ;

END IF ;

-- =========================== 业务处理 ===========================

-- START TRANSACTION;

-- todo begin

-- 根据表ID获取 存储配置ID(SDS.SD_ID)

select

SD_ID

into

v_sd_id

from tbls

where TBL_ID = v_tbl_id

;

-- 根据表ID获取 分区ID(PARTITIONS.part_id)

select

part_id

into

v_part_id

from partitions

where tbl_id = v_tbl_id

;

-- 根据存储配置ID(SDS.SD_ID)获取 表字段信息ID(COLUMNS_V2.cd_id)和序列化类配置ID(SERDES.serde_id)

select

cd_id

,serde_id

into

v_cd_id

,v_serde_id

from sds

where sd_id = v_sd_id

;

-- 删除表属性信息数据

delete from table_params where tbl_id = v_tbl_id;

-- 删除表信息数据

delete from tbls where tbl_id = v_tbl_id;

-- 删除文件存储的基本信息数据

delete from sds where sd_id = v_sd_id;

-- 删除存储序列化属性信息数据

delete from serde_params where serde_id = v_serde_id;

-- 删除存储序列化使用的类信息数据

delete from serdes where serde_id = v_serde_id;

-- 删除表的字段信息数据

delete from columns_v2 where cd_id = v_cd_id;

-- 判断是否v_part_id值是否为空,如果不为空,表示分区属性表和分区字段值表有值,进行删除.

if v_part_id is not  null then

-- 删除分区属性信息数据

delete from partition_params where part_id = v_part_id;

-- 删除分区字段值表数据

delete from partition_key_vals where part_id = v_part_id;

end if;

-- 删除分区信息数据

delete from partitions where tbl_id = v_tbl_id;

-- 删除分区字段信息数据

delete from partition_keys where tbl_id = v_tbl_id;

-- todo end

-- COMMIT;

-- 处理成功后的返回值

set o_outcode =0;

set o_outmsg = 'succe' ;

END

$$

DELIMITER ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值