一种变更数据抽取的方法及装置与流程

文档序号:11177363阅读:360来源:国知局
一种变更数据抽取的方法及装置与流程

本发明涉及数据库技术领域,更具体地,涉及一种变更数据抽取的方法及装置。



背景技术:

数据抽取工作可看作是etl(extract-transform-load,数据的抽取、转换和装载)过程,常常在多个系统相互协作时用到。由于不同系统由不同单位承建或者系统数据库类型不一致,往往导致新建设的系统不能够直接与原系统使用相同的数据库。为保证系统间协作的正常运转,因此需要使用数据抽取技术进行系统间的数据同步。

数据抽取技术需要保证在不影响原系统正常业务开展的情况下,实时或定时更新目标系统的数据库。数据抽取包括全量抽取和增量抽取两种类型,当数据表的数据量较大时,如果每次都进行全量抽取的方式,会导致抽取效率低,影响工作的开展,因此在这种情况下需要进行增量抽取。而增量抽取在数据抽取实施过程中还存在各种问题。

现有的数据增量抽取方案,多是通过对源数据库做相应程度的修改(如,修改表结构、创建临时表等)来进一步实施的,这些增量抽取的方案在一定程度上影响到了源数据库的性能,可能导致源系统业务无法正常开展。因此,在数据增量抽取的实际操作中不允许对已有数据库进行结构变动。

因此,提供一种变更数据抽取的方法及装置,解决现有技术中在进行数据增量抽取时,需对源数据库进行修改,从而影响源系统业务的正常开展的问题,是本领域亟待解决的问题。



技术实现要素:

有鉴于此,本发明提供了一种变更数据抽取的方法及装置,解决现有技术中在进行数据增量抽取时,需对源数据库进行修改,从而影响源系统业务的正常开展的问题。

为了解决上述技术问题,本发明提出一种变更数据抽取的方法,包括:

获取源数据库的数据的信息,其中,所述数据的信息,包括:时间字段、状态字段和记录主键;

获取所述源数据库的时间,记作全量抽取时间,并将所述全量抽取时间存储于第一数据表中;

结合所述数据的时间字段,对所述源数据库进行全量抽取,获取所述全量抽取时间以前的所有数据,并将抽取的所述数据传输到目标数据库;

结合所述数据的状态字段,获取所述目标数据库中处于变动状态的所述数据的记录主键,并将所述记录主键存储于第二数据表中;

获取所述第一数据表中最后一次更新的抽取时间,并将所述抽取时间作为增量抽取开始时间;

再次获取所述源数据库的时间,记作增量抽取结束时间,并将所述增量抽取结束时间存储于第一数据表中;

结合所述数据的时间字段,对所述源数据库进行增量抽取,获取所述增量抽取开始时间到所述增量抽取结束时间之间的所有数据,并将抽取的所述数据传输到目标数据库;

获取所述第二数据表中的所述记录主键,将所述记录主键对应的所述数据从目标数据库中删除,同时依据所述记录主键从源数据库中重新进行数据的抽取,将抽取的所述数据传输到目标数据库;

清空所述第二数据表中的所述记录主键,结合所述数据的状态字段,重新获取所述目标数据库中处于变动状态的所述数据的记录主键,并将新获取的所述记录主键存储于第二数据表中。

进一步地,将所述全量抽取时间存储于第一数据表中,包括:将所述全量抽取时间生成传递变量;进一步为:

获取所述源数据库的时间,记作全量抽取时间,将所述全量抽取时间转变为具有传递变量特性的所述全量抽取时间,并将所述全量抽取时间存储于第一数据表中。

进一步地,将最后一次更新的所述抽取时间作为增量抽取开始时间,包括:将最后一次更新的所述抽取时间生成传递变量;进一步为:

获取所述第一数据表中最后一次更新的抽取时间,并将最后一次更新的所述抽取时间作为增量抽取开始时间,将所述抽取时间转变为具有传递变量特性的所述增量抽取开始时间。

进一步地,将所述增量抽取结束时间存储于第一数据表中,包括:将所述增量抽取结束时间生成传递变量;进一步为:

再次获取所述源数据库的时间,记作增量抽取结束时间,将所述增量抽取结束时间,转变为具有传递变量特性的所述增量抽取结束时间,并将所述增量抽取结束时间存储于第一数据表中。

进一步地,获取所述第二数据表中的所述记录主键,包括:将所述记录主键依次生成传递变量,进一步为:

获取所述第二数据表中的所述记录主键,将所述记录主键依次生成具有传递变量特性的所述记录主键,将所述记录主键对应的所述数据从目标数据库中删除,同时依据所述记录主键从源数据库中重新进行数据的抽取,将抽取的所述数据传输到目标数据库。

还包括,一种变更数据抽取的装置,其特征在于,该装置包括:数据获取单元、全量抽取时间获取单元、全量抽取单元、记录主键存储单元、增量抽取开始时间获取单元、增量抽取结束时间获取单元、增量抽取单元、目标数据库更新单元和第二数据表更新单元,其中;

所述数据获取单元与所述全量抽取单元和所述增量抽取单元相连接,用于:获取源数据库的数据的信息,其中,所述数据的信息,包括:时间字段、状态字段和记录主键;

所述全量抽取时间获取单元与所述全量抽取单元相连接,用于:获取所述源数据库的时间,记作全量抽取时间,并将所述全量抽取时间存储于第一数据表中;

所述全量抽取单元与所述数据获取单元、所述全量抽取时间获取单元和所述记录主键存储单元相连接,用于:结合所述数据的时间字段,对所述源数据库进行全量抽取,获取所述全量抽取时间以前的所有数据,并将抽取的所述数据传输到目标数据库;

所述记录主键存储单元与所述全量抽取单元和所述目标数据库更新单元相连接,用于:结合所述数据的状态字段,获取所述目标数据库中处于变动状态的所述数据的记录主键,并将所述记录主键存储于第二数据表中;

所述增量抽取开始时间获取单元与所述增量抽取单元相连接,用于:获取所述第一数据表中最后一次更新的抽取时间,并将所述抽取时间作为增量抽取开始时间;

所述增量抽取结束时间获取单元与所述增量抽取单元相连接,用于:再次获取所述源数据库的时间,记作增量抽取结束时间,并将所述增量抽取结束时间存储于第一数据表中;

所述增量抽取单元与所述数据获取单元、所述增量抽取开始时间获取单元、所述增量抽取开始时间获取单元和所述目标数据库更新单元相连接,用于:结合所述数据的时间字段,对所述源数据库进行增量抽取,获取所述增量抽取开始时间到所述增量抽取结束时间之间的所有数据,并将抽取的所述数据传输到目标数据库;

所述目标数据库更新单元与所述记录主键存储单元、所述增量抽取单元和所述第二数据表更新单元相连接,用于:获取所述第二数据表中的所述记录主键,将所述记录主键对应的所述数据从目标数据库中删除,同时依据所述记录主键从源数据库中重新进行数据的抽取,将抽取的所述数据传输到目标数据库;

所述第二数据表更新单元与所述目标数据库更新单元相连接,用于:清空所述第二数据表中的所述记录主键,结合所述数据的状态字段,重新获取所述目标数据库中处于变动状态的所述数据的记录主键,并将新获取的所述记录主键存储于第二数据表中。

进一步地,所述全量抽取时间获取单元,进一步为:

所述全量抽取时间获取单元,用于:获取所述源数据库的时间,记作全量抽取时间,将所述全量抽取时间转变为具有传递变量特性的所述全量抽取时间,并将所述全量抽取时间存储于第一数据表中。

进一步地,所述增量抽取开始时间获取单元,进一步为:

所述增量抽取开始时间获取单元,用于:获取所述第一数据表中最后一次更新的抽取时间,并将最后一次更新的所述抽取时间作为增量抽取开始时间,将所述抽取时间转变为具有传递变量特性的所述增量抽取开始时间。

进一步地,所述增量抽取结束时间获取单元,进一步为:

所述增量抽取结束时间获取单元,用于:再次获取所述源数据库的时间,记作增量抽取结束时间,将所述增量抽取结束时间,转变为具有传递变量特性的所述增量抽取结束时间,并将所述增量抽取结束时间存储于第一数据表中。

进一步地,所述目标数据库更新单元,进一步为:

所述目标数据库更新单元,用于:获取所述第二数据表中的所述记录主键,将所述记录主键依次生成具有传递变量特性的所述记录主键,将所述记录主键对应的所述数据从目标数据库中删除,同时依据所述记录主键从源数据库中重新进行数据的抽取,将抽取的所述数据传输到目标数据库。

与现有技术相比,本发明的变更数据抽取的方法及装置,实现了如下的有益效果:

(1)本发明所述的变更数据抽取的方法及装置,通过合理利用数据表中的时间字段和状态字段,在对源数据库不做任何修改的情况下,可以进行相应的全量数据抽取或增量数据抽取,实现协作系统间的数据同步,可确保源数据库业务的正常运行,在保证可靠性和抽取效率的同时,具有实现难度小、降低用户成本的特性。

(2)本发明所述的变更数据抽取的方法及装置,每次数据抽取开始时,记录数据抽取时间作为本次抽取结束时间,使得下一次数据抽取从上次数据抽取的结束时间开始,能够避免因目标服务器在某一时间段断电,造成定期增量更新的数据缺失问题。

(3)本发明所述的变更数据抽取的方法及装置,通过具有生成变量的功能的etl工具,将相应的数据抽取时间,转变为具有传递变量特性的数据抽取时间,生成的传递变量的数据,可以优先被调出使用,避免与数据表中的历史数据抽取时间相混淆,影响数据抽取的准确性。

当然,实施本发明的任一产品必不特定需要同时达到以上所述的所有技术效果。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。

图1为本发明实施例1提供的变更数据抽取的方法的流程示意图;

图2为本发明实施例2提供的变更数据抽取的方法的流程示意图;

图3为本发明实施例3提供的变更数据抽取的装置的结构示意图;

图4为本发明实施例4提供的变更数据抽取的装置的结构示意图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

实施例1

如图1所示,本实施例1所提供的变更数据抽取的方法,包括如下步骤:

步骤101、获取源数据库的数据的信息,其中,所述数据的信息,包括:时间字段、状态字段和记录主键。

源数据库由大量数据构成,每条数据均携带有数据信息,在进行数据抽取之前,从源数据库中获取每条数据的数据信息,以便系统根据获取的数据信息进行相应的数据处理。所述数据的信息,包括:时间字段:用于标识记录数据生成的时间,状态字段:用于标识记录数据是否处于变动状态,记录主键:用于标识数据的记录,通过所述记录主键可以从源数据库提取相应的所述数据。

步骤102、获取所述源数据库的时间,记作全量抽取时间,并将所述全量抽取时间存储于第一数据表中。

所谓全量抽取,是指将数据源中的表或视图原封不动的从源数据库中抽取出来,并转换成自己的etl工具可以识别的格式。将获取所述源数据库的时间,存储于第一数据表中,可作为后期增量抽取开始时间,便于后期随时调取使用。

步骤103、结合所述数据的时间字段,对所述源数据库进行全量抽取,获取所述全量抽取时间以前的所有数据,并将抽取的所述数据传输到目标数据库。

由于每个所述数据均携带有相应的时间信息,结合所述数据的时间字段信息,对所述源数据库进行全量抽取,获取所述全量抽取时间以前的所有数据,并将抽取的数据传输到目标数据库中,完成全量抽取的过程。

本实施例中,etl工具会依据数据的时间字段的信息对源数据库进行数据过滤、抽取,从而实现数据抽取的过程。

步骤104、结合所述数据的状态字段,获取所述目标数据库中处于变动状态的所述数据的记录主键,并将所述记录主键存储于第二数据表中。

所述状态字段用于:标识记录数据是否处于变动状态,当所述状态字段处于变动状态,说明该数据记录的信息,比如,工单,处于流转状态尚未结束,因此从目标数据库中提取处于变动状态的记录主键信息,存储于第二数据库中,方便后期增量抽取时的随时调用。

本实施例中,etl工具会依据,数据的状态字段的信息对目标数据库进行数据过滤、抽取,从而获取处于变动状态的所述数据,提取所述数据的相应记录主键信息。

步骤105、获取所述第一数据表中最后一次更新的抽取时间,并将所述抽取时间作为增量抽取开始时间。

步骤106、再次获取所述源数据库的时间,记作增量抽取结束时间,并将所述增量抽取结束时间存储于第一数据表中。

增量是以一个时间段为计量单位,记录源数据库在该段时间内较以前增加的数据记录。所谓增量抽取,是指将该段时间内增长的数据记录从源数据库中抽取出来,并转换成自己的etl工具可以识别的格式。将再次获取所述源数据库的时间,记作增量抽取结束时间,存储于第一数据表中,可作为下次增量抽取开始时间,便于后期随时调取使用。

步骤107、结合所述数据的时间字段,对所述源数据库进行增量抽取,获取所述增量抽取开始时间到所述增量抽取结束时间之间的所有数据,并将抽取的所述数据传输到目标数据库。

步骤108、获取所述第二数据表中的所述记录主键,将所述记录主键对应的所述数据从目标数据库中删除,同时依据所述记录主键从源数据库中重新进行数据的抽取,将抽取的所述数据传输到目标数据库。

第二数据表中储存的是全量抽取时间段内,处于变动状态(本实施例中,表示:工单处于流动状态尚未完成)的数据的记录主键信息,在经过后续增量抽取的一段时间间隔后,之前处于变动状态的数据,现在有可能部分完成或者全部完成了。而此时目标数据库中存储的处于变动状态的数据信息仍是上一个时间段的抽取数据的状态,因此需要对目标数据库进行更新,将现有目标数据库中处于变动状态的数据删除,然后依据记录主键从源数据库中进行数据的重新抽取,将最新动态的所述数据存储于目标数据库中。

步骤109、清空所述第二数据表中的所述记录主键,结合所述数据的状态字段,重新获取所述目标数据库中处于变动状态的所述数据的记录主键,并将新获取的所述记录主键存储于第二数据表中。

本步骤实现对第二数据表的更新,更新后的数据便于下次增量抽取时使用。

如果继续进行第二次增量抽取,当完成步骤109后则返回步骤105,进行下一次增量抽取的过程,形成增量抽取的循环结构。

通过合理利用数据表中的时间字段和状态字段,在对源数据库不做任何修改的情况下,可以进行相应的数据抽取,实现协作系统间的数据同步,可确保源数据库业务的正常运行,在保证可靠性和抽取效率的同时,具有实现难度小、降低用户成本的特性。

实施例2

如图2所示,本实施例2所提供的变更数据抽取的方法,包括如下步骤:

步骤201、获取源数据库的数据的信息,其中,所述数据的信息,包括:时间字段、状态字段和记录主键。

源数据库由大量数据构成,每条数据均携带有数据信息,在进行数据抽取之前,从源数据库中获取每条数据的数据信息,以便系统根据获取的数据信息进行相应的数据处理。所述数据的信息,包括:时间字段:用于标识记录数据生成的时间,状态字段:用于标识记录数据是否处于变动状态,记录主键:用于标识数据的记录,通过所述记录主键可以从源数据库提取相应的所述数据。

步骤202、获取所述源数据库的时间,记作全量抽取时间,并将所述全量抽取时间存储于第一数据表中。

所谓全量抽取,是指将数据源中的表或视图原封不动的从源数据库中抽取出来,并转换成自己的etl工具可以识别的格式。将获取所述源数据库的时间,存储于第一数据表中,可作为后期增量抽取开始时间,便于后期随时调取使用。

在一些可选的实施例中,将所述全量抽取时间存储于第一数据表中,包括:将所述全量抽取时间生成传递变量;步骤202,进一步为:

获取所述源数据库的时间,记作全量抽取时间,将所述全量抽取时间转变为具有传递变量特性的所述全量抽取时间,并将所述全量抽取时间存储于第一数据表中。

如果在此次全量抽取之前,已经进行过多次数据抽取,并在所述第一数据表中存储有多个历史抽取时间的数据,为避免所述全量抽取时间与历史抽取时间的数据混淆,本实施例,通过具有生成变量的功能的etl工具,将所述全量抽取时间,转变为具有传递变量特性的所述全量抽取时间,在本步骤生成的变量,可以在后面的步骤中优先被调出使用。

步骤203、结合所述数据的时间字段,对所述源数据库进行全量抽取,获取所述全量抽取时间以前的所有数据,并将抽取的所述数据传输到目标数据库。

由于每个所述数据均携带有相应的时间信息,结合所述数据的时间字段信息,对所述源数据库进行全量抽取,获取所述全量抽取时间以前的所有数据,并将抽取的数据传输到目标数据库中,完成全量抽取的过程。

本实施例中,etl工具会依据,数据的时间字段的信息对源数据库进行数据过滤、抽取,从而实现数据抽取的过程。

步骤204、结合所述数据的状态字段,获取所述目标数据库中处于变动状态的所述数据的记录主键,并将所述记录主键存储于第二数据表中。

所述状态字段用于:标识记录数据是否处于变动状态,当所述状态字段处于变动状态,说明该数据记录的信息,比如,工单,处于流转状态尚未结束,因此从目标数据库中提取处于变动状态的记录主键信息,存储于第二数据库中,方便后期增量抽取时的随时调用。

本实施例中,etl工具会依据,数据的状态字段的信息对目标数据库进行数据过滤、抽取,从而获取处于变动状态的所述数据,提取所述数据的相应记录主键信息。

步骤205、获取所述第一数据表中最后一次更新的抽取时间,并将最后一次更新的所述抽取时间作为增量抽取开始时间。

在一些可选的实施例中,将最后一次更新的所述抽取时间作为增量抽取开始时间,包括:将最后一次更新的所述抽取时间生成传递变量;步骤205,进一步为:

获取所述第一数据表中最后一次更新的抽取时间,并将最后一次更新的所述抽取时间作为增量抽取开始时间,将所述抽取时间转变为具有传递变量特性的所述增量抽取开始时间。

etl工具,具有生成变量的功能,通过etl工具将所述抽取时间,转变为具有传递变量特性的所述增量抽取开始时间,在本步骤生成的变量,可以在后面的步骤中调出使用。后期系统获取增量抽取开始时间时,将直接获取具有传递变量特性的所述增量抽取开始时间。

步骤206、再次获取所述源数据库的时间,记作增量抽取结束时间,并将所述增量抽取结束时间存储于第一数据表中。

增量是以一个时间段为计量单位,记录源数据库在该段时间内较以前增加的数据记录。所谓增量抽取,是指将该段时间内增长的数据记录从源数据库中抽取出来,并转换成自己的etl工具可以识别的格式。将再次获取所述源数据库的时间,记作增量抽取结束时间,存储于第一数据表中,可作为下次增量抽取开始时间,便于后期随时调取使用。

在一些可选的实施例中,将所述增量抽取结束时间存储于第一数据表中,包括:将所述增量抽取结束时间生成传递变量;步骤206,进一步为:

再次获取所述源数据库的时间,记作增量抽取结束时间,将所述增量抽取结束时间,转变为具有传递变量特性的所述增量抽取结束时间,并将所述增量抽取结束时间存储于第一数据表中。

本实施例,通过具有生成变量的功能的etl工具,将所述增量抽取结束时间,转变为具有传递变量特性的所述增量抽取结束时间,后期提取所述第一数据表中的所述增量抽取结束时间时,将直接提取具有传递变量特性的所述增量抽取结束时间。

步骤207、结合所述数据的时间字段,对所述源数据库进行增量抽取,获取所述增量抽取开始时间到所述增量抽取结束时间之间的所有数据,并将抽取的所述数据传输到目标数据库。

步骤208、获取所述第二数据表中的所述记录主键,将所述记录主键对应的所述数据从目标数据库中删除,同时依据所述记录主键从源数据库中重新进行数据的抽取,将抽取的所述数据传输到目标数据库。

第二数据表中储存的是全量抽取时间段内,处于变动状态(本实施例中,表示:工单处于流动状态尚未完成)的数据的记录主键信息,在经过后续增量抽取的一段时间间隔后,之前处于变动状态的数据,现在有可能部分完成或者全部完成了。而此时目标数据库中存储的处于变动状态的数据信息仍是上一个时间段的抽取数据的状态,因此需要对目标数据库进行更新,将现有目标数据库中处于变动状态的数据删除,然后依据记录主键从源数据库中进行数据的重新抽取,将最新动态的所述数据存储于目标数据库中。

在一些可选的实施例中,获取所述第二数据表中的所述记录主键,包括:将所述记录主键依次生成传递变量;步骤208,进一步为:

获取所述第二数据表中的所述记录主键,将所述记录主键依次生成具有传递变量特性的所述记录主键,将所述记录主键对应的所述数据从目标数据库中删除,同时依据所述记录主键从源数据库中重新进行数据的抽取,将抽取的所述数据传输到目标数据库。

etl工具,具有生成变量的功能,通过etl工具将所述记录主键,转变为具有传递变量特性的所述记录主键,在本步骤生成的变量,可以在后面的步骤中调出使用。

步骤209、清空所述第二数据表中的所述记录主键,结合所述数据的状态字段,重新获取所述目标数据库中处于变动状态的所述数据的记录主键,并将新获取的所述记录主键存储于第二数据表中。

本步骤实现对第二数据表的更新,更新后的数据便于下次增量抽取时使用。

如果继续进行第二次增量抽取,当完成步骤209后则返回步骤205,进行下一次增量抽取的过程,形成增量抽取的循环结构。

通过具有生成变量的功能的etl工具,将相应的数据抽取时间,转变为具有传递变量特性的数据抽取时间,在数据转变步骤生成的变量,可以在后面的步骤中优先被调出使用,避免与数据表中的历史数据抽取时间相混淆,影响数据抽取的准确性。

实施例3

如图3所示,本实施例3所提供的变更数据抽取的装置30,包括:数据获取单元301、全量抽取时间获取单元302、全量抽取单元303、记录主键存储单元304、增量抽取开始时间获取单元305、增量抽取结束时间获取单元306、增量抽取单元307、目标数据库更新单元308和第二数据表更新单元309。

所述数据获取单元301与所述全量抽取单元303和所述增量抽取单元307相连接,由于源数据库由大量数据构成,每条数据均携带有数据信息,在进行数据抽取之前,所述数据获取单元301用于:获取所述源数据库的数据的信息,以便系统根据获取的数据信息进行相应的数据处理,其中,所述数据的信息,包括:用于标识记录数据生成的时间的时间字段、用于标识记录数据变动状态的状态字段和用于标识数据的记录的记录主键;将获取的数据的信息传送到所述全量抽取单元303和所述增量抽取单元307。

所述全量抽取时间获取单元302与所述全量抽取单元303相连接,所谓全量抽取,是指将数据源中的表或视图原封不动的从源数据库中抽取出来,并转换成自己的etl工具可以识别的格式。所述全量抽取时间获取单元302用于:获取所述源数据库的时间,记作全量抽取时间,并将所述全量抽取时间存储于第一数据表中,便于后期随时调取使用;将所述第一数据表中的数据传送到所述全量抽取单元303。

所述全量抽取单元303与所述数据获取单元301、所述全量抽取时间获取单元302和所述记录主键存储单元304相连接,由于每个所述数据均携带有相应的时间信息,所述全量抽取单元303用于:结合所述数据的时间字段,对所述源数据库进行全量抽取,获取所述全量抽取时间以前的所有数据,并将抽取的所述数据传输到目标数据库,完成全量抽取的过程;将目标数据库的信息传送到所述记录主键存储单元304。

所述记录主键存储单元304与所述全量抽取单元303和所述目标数据库更新单元308相连接,所述状态字段用于标识记录数据是否处于变动状态,当所述状态字段处于变动状态,说明该数据记录的信息尚未完成,所述记录主键存储单元304用于:结合所述数据的状态字段,获取所述目标数据库中处于变动状态的所述数据的记录主键,并将所述记录主键存储于第二数据表中,方便后期增量抽取时的随时调用;将所述第二数据表中的数据传送至所述目标数据库更新单元308。

所述增量抽取开始时间获取单元305与所述增量抽取单元307相连接,用于:获取所述第一数据表中最后一次更新的抽取时间,并将所述抽取时间作为增量抽取开始时间,并将所述增量抽取开始时间传送至所述增量抽取单元307。

所述增量抽取结束时间获取单元306与所述增量抽取单元307相连接,增量是以一个时间段为计量单位,记录源数据库在该段时间内较以前增加的数据记录。所谓增量抽取,是指将该段时间内增长的数据记录从源数据库中抽取出来,并转换成自己的etl工具可以识别的格式。所述增量抽取结束时间获取单元306用于:再次获取所述源数据库的时间,记作增量抽取结束时间,并将所述增量抽取结束时间存储于第一数据表中,可作为下次增量抽取开始时间,便于后期随时调取使用,并将所述增量抽取结束时间传送至所述增量抽取单元307。

所述增量抽取单元307与所述数据获取单元301、所述增量抽取开始时间获取单元305、所述增量抽取结束时间获取单元306和所述目标数据库更新单元308相连接,用于:结合所述数据的时间字段,对所述源数据库进行增量抽取,获取所述全量抽取时间到所述增量抽取结束时间之间的所有数据,并将抽取的所述数据传输到目标数据库,将所述目标数据库数据传送至所述目标数据库更新单元308。

所述目标数据库更新单元308与所述记录主键存储单元304、所述增量抽取单元307和所述第二数据表更新单元309相连接,由于第二数据表中储存的是全量抽取时间段内,处于变动状态的数据的记录主键信息,在经过后续增量抽取的一段时间间隔后,之前处于变动状态的数据,现在有可能部分完成或者全部完成了,因此需要对目标数据库进行更新。所述目标数据库更新单元308用于:获取所述第二数据表中的所述记录主键,将所述记录主键对应的所述数据从目标数据库中删除,同时依据所述记录主键从源数据库中重新进行数据的抽取,将抽取的所述数据传输到目标数据库,并将所述目标数据库传送至所述第二数据表更新单元309。

所述第二数据表更新单元309与所述目标数据库更新单元308相连接,用于:清空所述第二数据表中的所述记录主键,结合所述数据的状态字段,重新获取所述目标数据库中处于变动状态的所述数据的记录主键,并将新获取的所述记录主键存储于第二数据表中,实现对第二数据表的更新,更新后的数据便于下次增量抽取时使用。

实施例4

如图4所示,本实施例4所提供的变更数据抽取的装置40,包括:数据获取单元401、全量抽取时间获取单元402、全量抽取单元403、记录主键存储单元404、增量抽取开始时间获取单元405、增量抽取结束时间获取单元406、增量抽取单元407、目标数据库更新单元408和第二数据表更新单元409。

所述数据获取单元401与所述全量抽取单元403和所述增量抽取单元407相连接,由于源数据库由大量数据构成,每条数据均携带有数据信息,在进行数据抽取之前,所述数据获取单元401用于:获取所述源数据库的数据的信息,以便系统根据获取的数据信息进行相应的数据处理,其中,所述数据的信息,包括:用于标识记录数据生成的时间的时间字段、用于标识记录数据变动状态的状态字段和用于标识数据的记录的记录主键;将获取的数据的信息传送到所述全量抽取单元403和所述增量抽取单元407。

所述全量抽取时间获取单元402与所述全量抽取单元403相连接,所谓全量抽取,是指将数据源中的表或视图原封不动的从源数据库中抽取出来,并转换成自己的etl工具可以识别的格式。所述全量抽取时间获取单元402用于:获取所述源数据库的时间,记作全量抽取时间,通过具有生成变量的功能的etl工具,将所述全量抽取时间,转变为具有传递变量特性的所述全量抽取时间,并将所述全量抽取时间存储于第一数据表中,在本步骤生成的变量,可以在后面的步骤中优先被调出使用;将所述第一数据表中的数据传送到所述全量抽取单元403。

所述全量抽取单元403与所述数据获取单元401、所述全量抽取时间获取元402和所述记录主键存储单元404相连接,由于每个所述数据均携带有相应的时间信息,所述全量抽取单元403用于:结合所述数据的时间字段,对所述源数据库进行全量抽取,获取所述全量抽取时间以前的所有数据,并将抽取的所述数据传输到目标数据库,完成全量抽取的过程;将目标数据库的信息传送到所述记录主键存储单元404。

所述记录主键存储单元404与所述全量抽取单元403和所述目标数据库更新单元408相连接,所述状态字段用于标识记录数据是否处于变动状态,当所述状态字段处于变动状态,说明该数据记录的信息尚未完成,所述记录主键存储单元404用于:结合所述数据的状态字段,获取所述目标数据库中处于变动状态的所述数据的记录主键,并将所述记录主键存储于第二数据表中,方便后期增量抽取时的随时调用;将所述第二数据表中的数据传送至所述目标数据库更新单元408。

所述增量抽取开始时间获取单元405与所述增量抽取单元407相连接,用于:获取所述第一数据表中最后一次更新的抽取时间,并将最后一次更新的所述抽取时间作为增量抽取开始时间,通过具有生成变量的功能的etl工具,将所述抽取时间转变为具有传递变量特性的所述增量抽取开始时间,在本步骤生成的变量,可以在后面的步骤中被优先调出使用。并将所述增量抽取开始时间传送至所述增量抽取单元407。

所述增量抽取结束时间获取单元406与所述增量抽取单元407相连接,增量是以一个时间段为计量单位,记录源数据库在该段时间内较以前增加的数据记录。所谓增量抽取,是指将该段时间内增长的数据记录从源数据库中抽取出来,并转换成自己的etl工具可以识别的格式。所述增量抽取结束时间获取单元406用于:再次获取所述源数据库的时间,记作增量抽取结束时间,通过具有生成变量的功能的etl工具,将所述增量抽取结束时间,转变为具有传递变量特性的所述增量抽取结束时间,并将所述增量抽取结束时间存储于第一数据表中,并将所述增量抽取结束时间传送至所述增量抽取单元407。

所述增量抽取单元407与所述数据获取单元401、所述增量抽取开始时间获取单元405、所述增量抽取结束时间获取单元406和所述目标数据库更新单元408相连接,用于:结合所述数据的时间字段,对所述源数据库进行增量抽取,获取所述增量抽取开始时间到所述增量抽取结束时间之间的所有数据,并将抽取的所述数据传输到目标数据库,将所述目标数据库数据传送至所述目标数据库更新单元408。

所述目标数据库更新单元408与所述记录主键存储单元404、所述增量抽取单元407和所述第二数据表更新单元409相连接,由于第二数据表中储存的是全量抽取时间段内,处于变动状态的数据的记录主键信息,在经过后续增量抽取的一段时间间隔后,之前处于变动状态的数据,现在有可能部分完成或者全部完成了,因此需要对目标数据库进行更新。所述目标数据库更新单元408用于:获取所述第二数据表中的所述记录主键,通过具有生成变量的功能的etl工具,将所述记录主键依次生成具有传递变量特性的所述记录主键,在本步骤生成的变量,可以在后面的步骤中调出使用。将所述记录主键对应的所述数据从目标数据库中删除,同时依据所述记录主键从源数据库中重新进行数据的抽取,将抽取的所述数据传输到目标数据库,并将所述目标数据库传送至所述第二数据表更新单元409。

所述第二数据表更新单元409与所述目标数据库更新单元408相连接,用于:清空所述第二数据表中的所述记录主键,结合所述数据的状态字段,重新获取所述目标数据库中处于变动状态的所述数据的记录主键,并将新获取的所述记录主键存储于第二数据表中,实现对第二数据表的更新,更新后的数据便于下次增量抽取时使用。

通过以上各个实施例可知,本发明的变更数据抽取的方法和装置,存在的有益效果是:

(1)本发明所述的变更数据抽取的方法及装置,通过合理利用数据表中的时间字段和状态字段,在对源数据库不做任何修改的情况下,可以进行相应的全量数据抽取或增量数据抽取,实现协作系统间的数据同步,可确保源数据库业务的正常运行,在保证可靠性和抽取效率的同时,具有实现难度小、降低用户成本的特性。

(2)本发明所述的变更数据抽取的方法及装置,每次数据抽取开始时,记录数据抽取时间作为本次抽取结束时间,使得下一次数据抽取从上次数据抽取的结束时间开始,能够避免因目标服务器在某一时间段断电,造成定期增量更新的数据缺失问题。

(3)本发明所述的变更数据抽取的方法及装置,通过具有生成变量的功能的etl工具,将相应的数据抽取时间,转变为具有传递变量特性的数据抽取时间,生成的传递变量的数据,可以优先被调出使用,避免与数据表中的历史数据抽取时间相混淆,影响数据抽取的准确性。

本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

虽然已经通过例子对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上例子仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范围由所附权利要求来限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1