数据抽取之全量抽取(二)

本文主要介绍源表为单表时,数据全量抽取的情况。当源表为多表时,跟单表的情况差不多。
一、抽取情况说明
将源数据库S中的A表(将此表称为源表),通过ETL工具抽取至目标数据库T的A表(将此表称为目标表)。假设源表A的表结构与目标表A的表结构完全一致。表结构如下图所示:
数据抽取之全量抽取(二)
二、抽取过程
1、单次抽取流程图,如下图所示:
数据抽取之全量抽取(二)
1)、开始。
2)、查询源表A中所有数据记录。即在源数据库S下执行下面语句:select * from A。
3)、循环遍历每一条记录,将此记录记做SR。
4)、判断此记录SR是否存在。若SR不存在,说明源表A中无记录,结束。若SR存在,执行下一步。
5)、根据ID,查询目标表A中对应的记录,将此记录记做TR。即在目标数据库T下执行下面语句:select * from A where ID = :ID。根据目标表A的主键,进行过滤。
6)、判断此记录TR是否存在。若TR不存在,说明目标表A中无记录,则执行第9步。若TR存在,则执行第7步。
7)、比较SR和TR的记录,是否一致。若记录不一致,则执行下一步。若记录一致,则执行第3步。
8)、根据源表A的TR记录,修改并更新目标表A的SR记录。即在目标数据库T下执行下面语句:update A set MC=:MC where ID = :ID。
9)、将TR记录,插入值目标表A中。即在目标数据库T下执行下面语句:insert A(ID,MC) values (:ID,:MC)。且继续执行第3步。
10)、结束。
注意:本流程图,只是用来说明增量抽取的原理的,实际情况,使用ETL等相关工具进行抽取流程配置的时候会有所不同。
2、设置定时任务,根据实际情况,定时执行单次抽取过程。
三、需要注意的地方
全量抽取,只有在数据量较小,且对数据要求不高的情况下使用。全量抽取可以保证源表A和目标表A,无论是数量还是每条数据记录上都是完全一致的。