我是靠谱客的博主 舒服人生,这篇文章主要介绍etl循环跑数据(mysql),现在分享给大家,希望可以做个参考。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
DELIMITER $$ USE `dw`$$ DROP PROCEDURE IF EXISTS `sp_job_etl_loop_tmp`$$ CREATE DEFINER=`data`@`%` PROCEDURE `sp_job_etl_loop_tmp`() BEGIN /****************************************************************** * Procedure Name:sp_job_etl_loop_tmp * Parameter: * Creator:安 * Create Date:2015-06-05 * Description:手工循环跑数程序 * Version:1.0 ******************************************************************/ -- 需要定义接收游标数据的变量 DECLARE v_date DATE; -- 遍历数据结束标志 DECLARE done INT DEFAULT FALSE; -- 游标 DECLARE cur CURSOR FOR SELECT DATE FROM dw.t_time_dimension WHERE DATE >= '2015-11-17' AND DATE < '2016-01-01'; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN #获得异常信息 GET DIAGNOSTICS @cno = NUMBER; GET DIAGNOSTICS CONDITION @cno @mysql_error = MYSQL_ERRNO,@msg_text = MESSAGE_TEXT,@sql_state = returned_sqlstate; IF @mysql_error IS NOT NULL AND @msg_text IS NOT NULL THEN #日志变量初始化发生异常 SET @log_type=0; SET @msg_exception=CONCAT('error_no:',@mysql_error,' sql_state:',@sql_state,' error_text:',@msg_text); #输出异常 SELECT @msg_exception; END IF; #存储异常信息 CALL sp_write_error('dw.sp_job_etl_loop_tmp',@sql_state,@mysql_error,@msg_text,CONCAT('v_date:',v_date)); END; -- 将结束标志绑定到游标 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 打开游标 OPEN cur; -- 开始循环 read_loop: LOOP -- 提取游标里的数据,这里只有一个,多个的话也一样; FETCH cur INTO v_date; -- 声明结束的时候 IF done THEN LEAVE read_loop; END IF; -- 这里做你想做的循环的事件 END LOOP; -- 关闭游标 CLOSE cur; END$$ DELIMITER ;

最后

以上就是舒服人生最近收集整理的关于etl循环跑数据(mysql)的全部内容,更多相关etl循环跑数据(mysql)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(93)

评论列表共有 0 条评论

立即
投稿
返回
顶部