oracle 增量抽取数据存储过程
来源:互联网 发布:昆山仁宝网络怎么样 编辑:程序博客网 时间:2024/05/22 02:09
抽取日志表
create table ETL_LOG_DRAGON_ALERT( tablename VARCHAR2(50), etlbegintime DATE, etlendtime DATE, cq_count NUMBER, bd_count NUMBER, etlflag VARCHAR2(50), msg VARCHAR2(4000));
获取编号的方法,获取年月日+5位数字(从1开始)
eg: XF06-2016112400002
create or replace function fun_get_dragon_yjxxbh return varchar2 is v_xxbh varchar2(100);begin --获取信息编号的sequence序列号 --拼接最后8位数字 v_xxbh := '0000' || SEQ_dragon_YJXXBH.NEXTVAL; --根据区划和日期生成信息编号 v_xxbh := 'XF11-' || TO_CHAR(SYSDATE,'YYYYMMDD') || substr(v_xxbh, length(v_xxbh) - 4, 5); return v_xxbh;end;
create sequence SEQ_DRAGON_YJXXBHminvalue 1maxvalue 99999999999999999999start with 1increment by 1cache 20;
待抽取比对的表
create table T_DRAGON_GJXX( id VARCHAR2(10) not null, fsf_xm VARCHAR2(60) not null, fsf_gmsfhm VARCHAR2(18) not null, gjzt VARCHAR2(20), gjlb VARCHAR2(10) not null, csmc VARCHAR2(120), csszd_xzqh VARCHAR2(6) not null, cxxzd_xzqhmc VARCHAR2(120) not null, gjfw VARCHAR2(20), rksj VARCHAR2(14), qt VARCHAR2(200), fkid VARCHAR2(200), hdfssj VARCHAR2(14));comment on table T_DRAGON_GJXX is '巨龙推送轨迹信息表';comment on column T_DRAGON_GJXX.id is '主键 SEQ_GJID';comment on column T_DRAGON_GJXX.fsf_xm is '非正常上访人员姓名';comment on column T_DRAGON_GJXX.fsf_gmsfhm is '非正常上访人员公民身份号码';comment on column T_DRAGON_GJXX.gjzt is '轨迹主体 1或2代表身份证号 3代表车辆轨迹';comment on column T_DRAGON_GJXX.gjlb is '轨迹类别';comment on column T_DRAGON_GJXX.csmc is '场所名称';comment on column T_DRAGON_GJXX.csszd_xzqh is '场所所在地行政区划--暂定(可为空)';comment on column T_DRAGON_GJXX.cxxzd_xzqhmc is '场所所在地名称';comment on column T_DRAGON_GJXX.gjfw is '轨迹范围';comment on column T_DRAGON_GJXX.rksj is '入库时间 yyyymmddhh24miss';comment on column T_DRAGON_GJXX.qt is '其他 ';comment on column T_DRAGON_GJXX.fkid is '回传ID(布控编号)';comment on column T_DRAGON_GJXX.hdfssj is '活动发生时间';
比对结果表,是会话级别的表,表中数据在会话结束后就会被清空,在存储过程中使用时,用来暂存数据
create global temporary table TEMP_T_DRAGON_ALERT_JG( yjbh VARCHAR2(100), yjdd VARCHAR2(100), yjsj VARCHAR2(100), bkbh VARCHAR2(100), zdrybh VARCHAR2(100), xm VARCHAR2(100), sfzh VARCHAR2(100), gjid NUMBER)on commit delete rows; -- 这里的delete 表示,提交过后,数据就会被删除comment on table TEMP_T_DRAGON_ALERT_JG is '巨龙推送预警信息临时结果表';comment on column TEMP_T_DRAGON_ALERT_JG.yjbh is '预警编号';comment on column TEMP_T_DRAGON_ALERT_JG.yjdd is '预警地点';comment on column TEMP_T_DRAGON_ALERT_JG.yjsj is '预警时间';comment on column TEMP_T_DRAGON_ALERT_JG.bkbh is '布控编号';comment on column TEMP_T_DRAGON_ALERT_JG.zdrybh is '重点人员编号';comment on column TEMP_T_DRAGON_ALERT_JG.xm is '姓名';comment on column TEMP_T_DRAGON_ALERT_JG.sfzh is '身份证号';comment on column TEMP_T_DRAGON_ALERT_JG.gjid is '巨龙推送轨迹信息主键id';
抽取数据临时表,这个表示会话级的,暂存原表的数据,按照增量的形式将数据抽取到这张表,然后使用这些新增的数据区比对,然后将比对的结果,放入上面的比对结果表中
create global temporary table TEMP_T_DRAGON_GJXX( id VARCHAR2(10) not null, fsf_xm VARCHAR2(60) not null, fsf_gmsfhm VARCHAR2(18) not null, gjzt VARCHAR2(20), gjlb VARCHAR2(10) not null, csmc VARCHAR2(120), csszd_xzqh VARCHAR2(6) not null, cxxzd_xzqhmc VARCHAR2(120) not null, gjfw VARCHAR2(20), rksj VARCHAR2(14), qt VARCHAR2(200), fkid VARCHAR2(200), hdfssj VARCHAR2(14))on commit preserve rows; --这里的preserve 表示 提交后数据依然存在,但是会话结束,数据就会清空comment on table TEMP_T_DRAGON_GJXX is '抽取轨迹信息表临时表';comment on column TEMP_T_DRAGON_GJXX.id is '主键 SEQ_GJID';comment on column TEMP_T_DRAGON_GJXX.fsf_xm is '非正常上访人员姓名';comment on column TEMP_T_DRAGON_GJXX.fsf_gmsfhm is '非正常上访人员公民身份号码';comment on column TEMP_T_DRAGON_GJXX.gjzt is '轨迹主体 1或2代表身份证号 3代表车辆轨迹';comment on column TEMP_T_DRAGON_GJXX.gjlb is '轨迹类别';comment on column TEMP_T_DRAGON_GJXX.csmc is '场所名称';comment on column TEMP_T_DRAGON_GJXX.csszd_xzqh is '场所所在地行政区划--暂定(可为空)';comment on column TEMP_T_DRAGON_GJXX.cxxzd_xzqhmc is '场所所在地名称';comment on column TEMP_T_DRAGON_GJXX.gjfw is '轨迹范围';comment on column TEMP_T_DRAGON_GJXX.rksj is '入库时间 yyyymmddhh24miss';comment on column TEMP_T_DRAGON_GJXX.qt is '其他 ';comment on column TEMP_T_DRAGON_GJXX.fkid is '回传ID(布控编号)';comment on column TEMP_T_DRAGON_GJXX.hdfssj is '活动发生时间';
存储过程 :
create or replace procedure PRC_Dragon_Alert is /********************************************************* 名称 PRC_Dragon_Alert 功能描述:信访数据数据 修改记录 版本号 编辑时间 编辑人 修改描述 1.0.0 2016-1-16 aoliu 创建存储过程 *********************************************************/ p_Table_Name varchar2(100); ---------业务表 etlflag varchar2(100); ---------时间戳 TEMPCOUNTNUM number; ---------数据总量 UPDATENUM number; ---------修改总量 MAXFLAG varchar2(100); ----------最大时间戳 ETLBEGINTIME date; ---------开始时间 ETLENDTIME date; ---------结束时间 STATUS_FAILURE varchar2(1000); ---------异常信息begin ETLBEGINTIME := sysdate; p_Table_Name := 'T_DRAGON_GJXX'; -------------------------------------------------获取最大时间戳-------------------------- SELECT nvl(max(ETLFLAG), '19000101000000') INTO etlflag FROM etl_log_Dragon_Alert where TABLENAME = p_Table_Name; insert into TEMP_T_dragon_gjxx select * from T_dragon_gjxx where rksj > etlflag; TEMPCOUNTNUM := SQL%ROWCOUNT; commit; --------------------------- 巨龙预警信息结果表------------------------------------------------ insert into temp_t_Dragon_Alert_jg (yjbh, yjdd, yjsj, bkbh, zdrybh, xm, sfzh , gjid) select fun_get_dragon_yjxxbh() yjbh, CSMC yjdd, rksj yjsj , fkid bkbh , t2.zdrybh , FSF_XM xm, FSF_GMSFHM sfzh , t1.id gjid from TEMP_T_dragon_gjxx t1 , t_pvbdp_person_collection t2 where t1.fsf_gmsfhm = t2.sfzh and t2.sfzrr = '1' and t2.scbs = '0' ; UPDATENUM := SQL%ROWCOUNT; ------------------插预计表--------------------- insert into t_pvbdp_alert (id, yjbh, yjlx, ksjjsj, jsjjsj, yjdd, yjrs, jtgj, sxtzbh, yjsj, yjjsr, yjjsrmc, yjjsrssjgdm, clzt, sfgq) select sys_guid() id, yjbh, '4' yjlx, '' ksjjsj, '' jsjjsj, yjdd, '1' yjrs, '' jtgj, '' sxtzbh, yjsj, '' yjjsr, '' yjjsrmc, '' yjjsrssjgdm, '1' clzt, '0' sfgq from temp_t_Dragon_Alert_jg; --------------------插预计关联表--------------- insert into t_pvbdp_alert_related (id, yjbh, bkbh, zdrybh, sxtbh, xm, sfzh, gjbh, bdsj, yjlx) select sys_guid() id, yjbh, bkbh, zdrybh, '' sxtbh, xm, sfzh, GJID gjbh, yjsj bdsj, '4' yjlx from temp_t_Dragon_Alert_jg; SELECT nvl(max(RKSJ), '19001010010100') INTO MAXFLAG FROM temp_t_dragon_gjxx; ETLENDTIME := sysdate; ---------------------------正常记录日志--------------------------- INSERT INTO etl_log_dragon_alert (TABLENAME, ETLBEGINTIME, ETLENDTIME, CQ_COUNT, BD_COUNT, ETLFLAG, MSG) VALUES (p_Table_Name, ETLBEGINTIME, ETLENDTIME, TEMPCOUNTNUM, UPDATENUM, MAXFLAG, p_Table_Name || '抽取成功'); COMMIT; ---------------------------异常记录日志---------------------------exception when others then STATUS_FAILURE := to_char(sqlcode) || ': ' || substr(sqlerrm, 1, 980); INSERT INTO etl_log_dragon_alert (TABLENAME, ETLBEGINTIME, ETLENDTIME, CQ_COUNT, BD_COUNT, ETLFLAG, MSG) VALUES (p_Table_Name, ETLBEGINTIME, ETLENDTIME, TEMPCOUNTNUM, UPDATENUM, etlflag, STATUS_FAILURE);end;
0 0
- oracle 增量抽取数据存储过程
- Oracle抽取数据的存储过程
- Kettle数据抽取---增量抽取
- ssis数据增量抽取
- 数据增量抽取
- kettle增量抽取数据
- Oracle BI基础之ETL数据增量抽取方案
- IT忍者神龟之oracle存储过程简单从ODS抽取数据_面向对象思想
- 抽取增量数据算法说明
- 什么是数据抽取 --全量抽取、增量抽取
- ODI如何通过logminer技术从oracle 数据库中抽取增量数据(一)
- ODI如何通过logminer技术从oracle 数据库中抽取增量数据(二)
- ODI通过logminer技术从oracle 数据库中抽取增量数据1
- ODI如何通过logminer技术从oracle 数据库中抽取增量数据(一)
- ETL中的数据增量抽取机制研究
- SSIS探索之SSIS增量抽取数据
- ETL中的数据增量抽取机制
- datastage实现数据增量抽取方案
- 程序员面试金典——解题总结: 9.17中等难题 17.14句子分割
- 46. Permutations
- spark解决 org.apache.spark.SparkException: Kryo serialization failed: Buffer overflow
- Network Monitor 查询命令和MySQL命令
- bzoj4173:数学
- oracle 增量抽取数据存储过程
- 国内值得关注的官方API集合
- Android OTA升级之升级包生成脚本ota_from_target_files
- webview中的图片相应事件相应 坑
- 2017/1/17
- 欢迎使用CSDN-markdown编辑器
- strncpy()
- 实时仿真软件Sofa的安装(Windows+VS2008)
- zr20170117-css