数据仓库系统数据维护(部分表重跑)的一个方案
2010-09-15 22:36
381 查看
1、 需要跑批的日期维护表
create_date_list_table.sql
2、 插入日期测试数据
插入7、8日期.sql
3、 批调度存储过程
BATCH_SU_78.SQL
说明:过程分为游标取日期、从ODS取源数据、存储过程调度、SUB历史表备份等部分;其中,根据实际情况,取源表数据与存储过程调度根据报表系统需要及源数据的增量全量情况,进行相应的变换;本例中,SUB的SUB.DM3_REP_PLAN要求只需要取每月月末的数据,相关ODS源表只有ODS_CMS_CMIS_JJ是增量传送的,所以如程序中所示编写了代码。
4、 Shell调度程序
su_78.sh
5、 总结说明
这是一个根据ODS、EDW、SUB的环境情况,在源表数据出错的情况下,经过深层次分析,数据仓库系统数据维护个别表重跑的一个示例方案;以便于遇到类似情况,进行灵活变更,效仿操作。
create_date_list_table.sql
-- Create table create table EDW_DATE_LIST ( ID INTEGER, DATE_CUR VARCHAR2(8) ) ;
2、 插入日期测试数据
插入7、8日期.sql
truncate table Edw_Date_List; insert into Edw_Date_List (ID, DATE_CUR) values (1, '20100701'); insert into Edw_Date_List (ID, DATE_CUR) values (2, '20100702'); insert into Edw_Date_List (ID, DATE_CUR) values (3, '20100703'); insert into Edw_Date_List (ID, DATE_CUR) values (4, '20100704'); insert into Edw_Date_List (ID, DATE_CUR) values (5, '20100705'); insert into Edw_Date_List (ID, DATE_CUR) values (6, '20100706'); insert into Edw_Date_List (ID, DATE_CUR) values (7, '20100707'); insert into Edw_Date_List (ID, DATE_CUR) values (8, '20100708'); insert into Edw_Date_List (ID, DATE_CUR) values (9, '20100709'); insert into Edw_Date_List (ID, DATE_CUR) values (10, '20100710'); insert into Edw_Date_List (ID, DATE_CUR) values (11, '20100711'); insert into Edw_Date_List (ID, DATE_CUR) values (12, '20100712'); insert into Edw_Date_List (ID, DATE_CUR) values (13, '20100713'); insert into Edw_Date_List (ID, DATE_CUR) values (14, '20100714'); insert into Edw_Date_List (ID, DATE_CUR) values (15, '20100715'); insert into Edw_Date_List (ID, DATE_CUR) values (16, '20100716'); insert into Edw_Date_List (ID, DATE_CUR) values (17, '20100717'); insert into Edw_Date_List (ID, DATE_CUR) values (18, '20100718'); insert into Edw_Date_List (ID, DATE_CUR) values (19, '20100719'); insert into Edw_Date_List (ID, DATE_CUR) values (20, '20100720'); insert into Edw_Date_List (ID, DATE_CUR) values (21, '20100721'); insert into Edw_Date_List (ID, DATE_CUR) values (22, '20100722'); insert into Edw_Date_List (ID, DATE_CUR) values (23, '20100723'); insert into Edw_Date_List (ID, DATE_CUR) values (24, '20100724'); insert into Edw_Date_List (ID, DATE_CUR) values (25, '20100725'); insert into Edw_Date_List (ID, DATE_CUR) values (26, '20100726'); insert into Edw_Date_List (ID, DATE_CUR) values (27, '20100727'); insert into Edw_Date_List (ID, DATE_CUR) values (28, '20100728'); insert into Edw_Date_List (ID, DATE_CUR) values (29, '20100729'); insert into Edw_Date_List (ID, DATE_CUR) values (30, '20100730'); insert into Edw_Date_List (ID, DATE_CUR) values (31, '20100731'); insert into Edw_Date_List (ID, DATE_CUR) values (32, '20100801'); insert into Edw_Date_List (ID, DATE_CUR) values (33, '20100802'); insert into Edw_Date_List (ID, DATE_CUR) values (34, '20100803'); insert into Edw_Date_List (ID, DATE_CUR) values (35, '20100804'); insert into Edw_Date_List (ID, DATE_CUR) values (36, '20100805'); insert into Edw_Date_List (ID, DATE_CUR) values (37, '20100806'); insert into Edw_Date_List (ID, DATE_CUR) values (38, '20100807'); insert into Edw_Date_List (ID, DATE_CUR) values (39, '20100808'); insert into Edw_Date_List (ID, DATE_CUR) values (40, '20100809'); insert into Edw_Date_List (ID, DATE_CUR) values (41, '20100810'); insert into Edw_Date_List (ID, DATE_CUR) values (42, '20100811'); insert into Edw_Date_List (ID, DATE_CUR) values (43, '20100812'); insert into Edw_Date_List (ID, DATE_CUR) values (44, '20100813'); insert into Edw_Date_List (ID, DATE_CUR) values (45, '20100814'); insert into Edw_Date_List (ID, DATE_CUR) values (46, '20100815'); insert into Edw_Date_List (ID, DATE_CUR) values (47, '20100816'); insert into Edw_Date_List (ID, DATE_CUR) values (48, '20100817'); insert into Edw_Date_List (ID, DATE_CUR) values (49, '20100818'); insert into Edw_Date_List (ID, DATE_CUR) values (50, '20100819'); insert into Edw_Date_List (ID, DATE_CUR) values (51, '20100820'); insert into Edw_Date_List (ID, DATE_CUR) values (52, '20100821'); insert into Edw_Date_List (ID, DATE_CUR) values (53, '20100822'); insert into Edw_Date_List (ID, DATE_CUR) values (54, '20100823'); insert into Edw_Date_List (ID, DATE_CUR) values (55, '20100824'); insert into Edw_Date_List (ID, DATE_CUR) values (56, '20100825'); insert into Edw_Date_List (ID, DATE_CUR) values (57, '20100826'); insert into Edw_Date_List (ID, DATE_CUR) values (58, '20100827'); insert into Edw_Date_List (ID, DATE_CUR) values (59, '20100828'); insert into Edw_Date_List (ID, DATE_CUR) values (60, '20100829'); insert into Edw_Date_List (ID, DATE_CUR) values (61, '20100830'); insert into Edw_Date_List (ID, DATE_CUR) values (62, '20100831'); commit;
3、 批调度存储过程
BATCH_SU_78.SQL
CREATE OR REPLACE PROCEDURE BATCH_SU_78 AS --DECLARE O_RUNSTATUS NUMBER; O_MSG VARCHAR2(4000); V_DATE VARCHAR2(10); CURSOR CUR_EDW_DATE IS SELECT DATE_CUR FROM EDW_DATE_LIST ORDER BY ID; BEGIN --批量执行 OPEN CUR_EDW_DATE; LOOP FETCH CUR_EDW_DATE INTO V_DATE; EXIT WHEN CUR_EDW_DATE%NOTFOUND; --拉取ODS数据 EXECUTE IMMEDIATE 'TRUNCATE TABLE ODS_CMS_CMIS_JJ'; INSERT INTO EDW.ODS_CMS_CMIS_JJ SELECT * FROM BDW.ODS_CMS_CMIS_JJ WHERE ODS_DATA_DATE = V_DATE; COMMIT; --执行存储过程 P_T01_LOAN_DUE_BILL(V_DATE, O_RUNSTATUS, O_MSG); IF V_DATE IN ('20100731', '20100831') THEN --拉取全量表ODS数据 EXECUTE IMMEDIATE 'TRUNCATE TABLE C_ODS_CS_LNB_LNCF'; EXECUTE IMMEDIATE 'TRUNCATE TABLE ODS_CMS_CMIS_ZH_FS'; EXECUTE IMMEDIATE 'TRUNCATE TABLE ODS_CMS_CMIS_ZH_PT'; EXECUTE IMMEDIATE 'TRUNCATE TABLE DWIF_FCR_LN_DTL'; EXECUTE IMMEDIATE 'TRUNCATE TABLE DWIF_FCR_LN_SCHEDULE'; EXECUTE IMMEDIATE 'TRUNCATE TABLE ODS_WFM_BIZ_LOANNOTE'; INSERT INTO EDW.C_ODS_CS_LNB_LNCF SELECT * FROM BDW.C_ODS_CS_LNB_LNCF WHERE ODS_DATA_DATE = V_DATE; INSERT INTO EDW.ODS_CMS_CMIS_ZH_FS SELECT * FROM BDW.ODS_CMS_CMIS_ZH_FS WHERE ODS_DATA_DATE = V_DATE; INSERT INTO EDW.ODS_CMS_CMIS_ZH_PT SELECT * FROM BDW.ODS_CMS_CMIS_ZH_PT WHERE ODS_DATA_DATE = V_DATE; INSERT INTO EDW.DWIF_FCR_LN_DTL SELECT * FROM BDW.DWIF_FCR_LN_DTL WHERE DWIF_DATA_DATE = V_DATE; INSERT INTO EDW.DWIF_FCR_LN_SCHEDULE SELECT * FROM BDW.DWIF_FCR_LN_SCHEDULE WHERE DWIF_DATA_DATE = V_DATE; INSERT INTO EDW.ODS_WFM_BIZ_LOANNOTE SELECT * FROM BDW.ODS_WFM_BIZ_LOANNOTE WHERE ODS_DATA_DATE = V_DATE; --还款计划全量表调度 P_T01_REPAY_PLAN(V_DATE, O_RUNSTATUS, O_MSG); --SUB过程调度 P_SUB_DM3_REP_PLAN(V_DATE, O_RUNSTATUS, O_MSG); DELETE FROM SUB.DM3_REP_PLAN_HIS_78 WHERE ODS_DATA_DATE = V_DATE; INSERT INTO SUB.DM3_REP_PLAN_HIS_78 (DATA_DT ,TRCH_NO ,BRCH_NO ,CURR_REP_DATE ,NEXT_REP_DATE ,TOTAL_TERM ,CURR_TERM ,ODS_DATA_DATE) SELECT DATA_DT ,TRCH_NO ,BRCH_NO ,CURR_REP_DATE ,NEXT_REP_DATE ,TOTAL_TERM ,CURR_TERM ,V_DATE FROM SUB.DM3_REP_PLAN; END IF; COMMIT; END LOOP; COMMIT; END; /
说明:过程分为游标取日期、从ODS取源数据、存储过程调度、SUB历史表备份等部分;其中,根据实际情况,取源表数据与存储过程调度根据报表系统需要及源数据的增量全量情况,进行相应的变换;本例中,SUB的SUB.DM3_REP_PLAN要求只需要取每月月末的数据,相关ODS源表只有ODS_CMS_CMIS_JJ是增量传送的,所以如程序中所示编写了代码。
4、 Shell调度程序
su_78.sh
ORACLE_BASE=/opt/app/oracle;export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/10.2.0;export ORACLE_HOME ORACLE_SID=bdw;export ORACLE_SID $ORACLE_HOME/bin/sqlplus edw0708/edw0708<<! exec BATCH_SU_78; exit !
5、 总结说明
这是一个根据ODS、EDW、SUB的环境情况,在源表数据出错的情况下,经过深层次分析,数据仓库系统数据维护个别表重跑的一个示例方案;以便于遇到类似情况,进行灵活变更,效仿操作。
相关文章推荐
- 数据仓库系统实现DW与ODS字段类型及长度比对的一个方案
- 工业4.0时代,您需要的是高性价工业物联网智能网关,PLC远程监控,PLC远程维护,系统数据采集,一个都不能少。
- Tajo--一个分布式数据仓库系统(概述)
- Tajo--一个分布式数据仓库系统(设计架构)
- REST service 化一个数据系统(REST Service 的最佳实践,第 2 部分)
- Tajo--一个分布式数据仓库系统(分布式环境安装试用)
- 生产系统数据实时同步到rds数据仓库的一个样例
- 工业4.0时代,您需要的是高性价工业物联网智能网关(超高性价比),PLC远程监控,PLC远程维护,系统数据采集,一个都不能少。
- 基于数据仓库和维度转换技术的广东电信公话IC话机话务动态分析系统
- 数据仓库系统的实现与使用(含OLAP重点讲解)
- 和网友讨论的ERP系统数据保密方案
- Flume(NG)架构设计要点及配置实践 Flume NG是一个分布式、可靠、可用的系统,它能够将不同数据源的海量日志数据进行高效收集
- 丢失非系统非当前活动回滚段表空间中的一个数据文件
- 总结一下维护了一年的一个软件系统的软件体系(二)
- 连锁百货企业数据分析系统建设方案
- 数据仓库之-历史数据存储方案
- 系统间通信方式之(ActiveMQ的集群方案介绍结束2之高潮部分了【(1master+2slave)*cluster】)(十九)
- 关于技术方案的选择与系统日常维护的关系
- 报表系统FineReport通过权限控制数据访问方案
- 构建BI(商业智能)系统的核心——数据仓库引擎介绍