ETL通用解决方案_oracle+存储过程实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ETL通用解决方案一一oracle+存储过程实现
方案理念-- 四化理念
1.数据规格化
2.处理自动化
3.信息集中化
4.操作人性化
架构
通过视图实现来至两个不同数据库的表的结构完全一致, 在结构完全相同的两个表之间进行数据同步, 问题变得相当简单. 同步代码如下.
ETL
--- 初始同步
delete from ods_table; insert into v_table select * from db_table; commit;
--- 新增同步insert into v_table select * from db_table t where t.id not in (select id from v_table);
commit;
--- 变更同步
update ods_table t
set t.c_number = (select db.c_number from db_table db where db.id = t.id)
where t.c_number != (select db.c_number from db_table db where db.id =
t.id);
commit;
实现两个表结构完全一致的方法如下
--- 建表
CREATE SEQUENCE SEQ_ETL_INCREASE_ID
INCREMENT BY 1
START WITH 1
NOCACHE;
/* Table:
ETL_TABLES
*/
/* */
CREATE TABLE ETL_TABLES(
"ID" NUMBER DEFAULT -1 NOT NULL,
"DEVELOP_DATE" DATE
DEFAULT SYSDATE NOT NULL,
"DEVELOP_BY" VARCHAR2(100) DEFAULT 'cyyan@isoftstone' NOT NULL,
"LAST_MAINTAIN_BY" VARCHAR2(100) DE FAULT 'cyyan@isoftstone' NOT NULL,
"MEMO" VARCHAR2(500), "STATUS" NUMBER DEFAULT 1,
CONSTRAINT PK_ETL_TABLES PRIMARY KEY ("ID")
"TABLE_NAME" NOT NULL, "TABLE_TYPE" NOT NULL, "TABLE_ROOT_I
"TABLE_NEED_CREATE_VIEW" NUMBER
"TABLE_CREATE_VIEW_NAME_PREFIX" VARCHAR2(100)
VARCHAR2(30)
VARCHAR2(30), DEFAULT 1,
VARCHAR2(30)
"DB_LINK_NAME"
"CURRENT_VERSION" DEFAULT 1 NOT NULL,
"VERSION_HISTORY" FAULT 'init input' NOT
DEFAULT 'v',
VARCHAR2(100),
NUMBER
VARCHAR2(3000)
DE
"LAST_MAINTAIN_DATE"
DATE DEFAULT SYSDATE NOT NULL,
);
COMMENT ON TABLE ETL_TABLES IS
'此表用于维护ETL涉及到所有表,包括:
1, db--- 业务系统数据库
2, ods-
--
操作数据数据库
3, dw--- 数据仓库';
*/
/* Table:
ETL_VIEWS
*/
*/ CREATE TABLE ETL_VIEWS(
"ID" NUMBER
DEFAULT -1 NOT NULL,
"VIEW_NAME" NOT NULL,
"VIEW_TYPE"
NOT NULL,
"VIEW_ROOT_IN"
"VIEW_SELECT" NOT NULL,
"VIEW_FROM" NOT NULL,
"VIEW_WHERE"
"VIEW_ORDER_BY"
VARCHAR2(100)
VARCHAR2(30) VARCHAR2(30), VARCHAR2(4000)
VARCHAR2(600)
VARCHAR2(2000), VARCHAR2(600),
"VIEW_GROUP_BY" "VIEW_HAVING" "VIEW_DB_LINK_NAME" "CURRENT_VERSION" DEFAULT 1 NOT NULL, "VERSION_HISTORY" FAULT 'init input' NOT NULL,
"DEVELOP_DATE" DATE DEFAULT SYSDATE NOT NULL,
"DEVELOP_BY" VARCHAR2(100) DEFAULT 'cyyan@isoftstone' NOT NULL, "LAST_MAINTAIN_DATE"
DATE DEFAULT SYSDATE NOT NULL,
"LAST_MAINTAIN_BY" VARCHAR2(100) DE FAULT 'cyyan@isoftstone' NOT NULL,
"MEMO" VARCHAR2(500), "STATUS" NUMBER DEFAULT 1,
CONSTRAINT PK_ETL_VIEWS PRIMARY KEY ("ID") );
COMMENT ON TABLE ETL_VIEWS IS '此表用于维护ETL 涉及到所有视图,包括: 1, v1---db 表中与 ods 对应到视图 2, v2---ods 表中与 db 对应到视图 3, v3---ods 表中与dw 对应到视图 4, v4---dw 表中与 ods 中对应到视图 ';
VARCHAR2(600), VARCHAR2(600) VARCHAR2(100), NUMBER
VARCHAR2(3000)
DE