1、 拉链算法用到的相关表结构 建表脚本(源表、目的表、临时表).sql --生成目标表 create table EDW_T100_STATUS_H ( ID VARCHAR2(8) not null, STATUS VARCHAR2(8) not null, START_DATE DATE not null, END_DATE DATE not null ) ; --生成源表 create table ODS_XT_ZT ( ID VARCHAR2(8), STATUS VARCHAR2(8), ODS_DATA_DATE VARCHAR2(8) ) ; --生成数据恢复机制用的临时表 create global temporary table TMP_T100_STATUS_H ( ID VARCHAR2(8) not null, STATUS VARCHAR2(8) not null, START_DATE DATE not null, END_DATE DATE not null ) on commit delete rows; --生成存放历史的临时表 create global temporary table TMP_T100_STATUS_H_PRE ( ID VARCHAR2(8) not null, STATUS VARCHAR2(8) not null, START_DATE DATE not null, END_DATE DATE not null ) on commit delete rows; --生成存放当前数据的临时表 create global temporary table TMP_T100_STATUS_H_CUR ( ID VARCHAR2(8) not null, STATUS VARCHAR2(8) not null, START_DATE DATE not null, END_DATE DATE not null ) on commit delete rows; --生成存放新增数据(包含:1、CUR中有而PRE中没有的数据;2、CUR中有PRE中也有,但属性值有更新的,也需要新增开链的数据)的临时表 create global temporary table TMP_T100_STATUS_H_INS ( ID VARCHAR2(8) not null, STATUS VARCHAR2(8) not null, START_DATE DATE not null, END_DATE DATE not null ) on commit delete rows; --生成存放需要关链数据(包含:1、PRE中有而CUR中没有;2、PRE中有CUR中也有,但属性值有更新,需要将老数据关链的数据)的临时表 create global temporary table TMP_T100_STATUS_H_UPD ( ID VARCHAR2(8) not null, STATUS VARCHAR2(8) not null, START_DATE DATE not null, END_DATE DATE not null ) on commit delete rows; 2、 插入测试数据