确定表含义,字段含义,字典表,和他表是否有关联关系
确定对方数据总量,每日/周/月增长量
确定对方时间戳(递增序列戳)
小知识1:抽取对方1000~2000条数据将其存入新建的txt中,查看所占空间大小,通过等比约估表所占空间大小
小知识2:抽取对方数据时,走索引的不要修改索引列的字段类型
小知识3:第一次抽取历史大数据时,可以不建立目标表索引,以提高抽取速度
oracle抽取过程模板
这是依照上图写的抽取过程
PROCEDURE DR_ZYK_ZLGX(PK VARCHAR2, GXLX VARCHAR2) IS
V_SYSDATE DATE;
V_PK VARCHAR2(100);
V_GXLX VARCHAR2(100);
V_COUNT NUMBER;
V_ZXZT VARCHAR2(10);
V_MAXSJC DATE;
V_SJC DATE;
V_INSSQL VARCHAR2(4000);
V_YSB VARCHAR2(100);
V_MBB VARCHAR2(100);
V_ERR VARCHAR2(200);
BEGIN
--首先判断增量类型
V_PK := PK;
V_GXLX := GXLX;
--从表中获取填写内容是否有问题
SELECT SYSDATE INTO V_SYSDATE FROM DUAL;
SELECT COUNT(1)
INTO V_COUNT
FROM T_LOG_CZGC_SJC T
WHERE T.PK_VALUE = V_PK
AND T.GXLX = V_GXLX;
SELECT T.YSB, T.MBB
INTO V_YSB, V_MBB
FROM T_LOG_CZGC_SJC T
WHERE T.PK_VALUE = V_PK;
BEGIN
IF V_COUNT = 1 THEN
--获取执行状态
SELECT F_ZXZT(V_PK) INTO V_ZXZT FROM DUAL;
IF V_ZXZT <> '0' THEN
BEGIN
--执行执行'0'
DR_UP_SJC(V_PK, '0', SYSDATE, '0');
--查询最大时间戳
SELECT F_MAXSJC(V_PK) INTO V_MAXSJC FROM DUAL;
SELECT SJC, INS_SQL
INTO V_SJC, V_INSSQL
FROM T_LOG_CZGC_SJC T
WHERE T.PK_VALUE = V_PK;
--执行SQL语句
EXECUTE IMMEDIATE V_INSSQL
USING V_SJC, V_MAXSJC;
--更新时间戳
DR_UP_SJC(V_PK, '1', V_MAXSJC, '1');
--写入日志
DR_LOG(V_PK,
'1',
V_YSB,
V_MBB,
'',
0,
V_SJC,
V_MAXSJC,
V_SYSDATE);
--truncate table目标表
DR_TRUN(V_PK, '1');
EXCEPTION
WHEN OTHERS THEN
V_ERR := SUBSTRB(SQLERRM, 1, 200);
DR_UP_SJC(V_PK, '2', SYSDATE, '2');
DR_LOG(V_PK, '2', V_YSB, V_MBB, V_ERR, 0, '', '', V_SYSDATE);
END;
ELSE
NULL;
END IF;
ELSE
DR_LOG(V_PK,
'2',
V_YSB,
V_MBB,
'输入命令可能不是ZL',
0,
'',
'',
V_SYSDATE);
END IF;
EXCEPTION
WHEN OTHERS THEN
DR_UP_SJC(V_PK, '2', SYSDATE, '2');
END;
END;
防止过程在未完成时,其他应用调用其运行,导致表阻塞;