首页> 中国专利> 从一个源表到至少一个目标库的表的数据抽取系统及方法

从一个源表到至少一个目标库的表的数据抽取系统及方法

摘要

本发明公开了一种从一个源表到至少一个目标库的表的数据抽取系统及方法,所述系统包括读取模块、中间转换模块以及写入模块,所述中间转换模块包括用于封装源表的源数据对应于各目标数据库目标表的目标数据格式的转换处理过程的封装子模块,以使中间转换模块的转换处理次数为一次。所述数据抽取方法包括步骤:根据需求连接一个源表读取源数据;通过封装子模块将所述源数据一次转换处理成各目标数据库目标表对应的目标数据;以及将转换后的目标数据分别写入其对应的目标数据库目标表。本发明极大地简化了数据转换的操作配置,提高了处理效率,本发明同时还能有效提高整个系统的稳定性、扩展性和通用性,使得数据抽取与转换处理操作更加灵活和方便。

著录项

  • 公开/公告号CN102004744A

    专利类型发明专利

  • 公开/公告日2011-04-06

    原文格式PDF

  • 申请/专利权人 中国银联股份有限公司;

    申请/专利号CN200910195024.6

  • 发明设计人 杨燕明;陈林;马东良;

    申请日2009-09-02

  • 分类号G06F17/30(20060101);

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人谭佐晞;李家麟

  • 地址 200135 上海市浦东新区含笑路36号银联大厦

  • 入库时间 2023-12-18 01:52:15

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-10-23

    授权

    授权

  • 2012-05-09

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20090902

    实质审查的生效

  • 2011-04-06

    公开

    公开

说明书

【技术领域】

本发明涉及一种数据抽取系统及方法,尤其涉及一种从源数据库的一个源表到至少一个目标数据库的一个或多个目标表的数据抽取系统及方法,属于数据库技术领域。

【背景技术】

在现有的数据库数据处理领域中,存在着一些基于ETL(Extraction-Transform-Load,即抽取-转换-加载)技术的数据抽取工具,例如Ascential公司的Datastage、Informatica公司的Powercenter、NCR Teradata公司的ETL Automation等,这类应用工具均具备实现简单数据转换的功能,也能够很好地处理极为特殊的需求,但通用性问题一直是其主要的应用瓶颈。另外,它们昂贵的价格也是难以将其进行广泛普及的重要因素之一,特别是在面对一些简单的并且无须经常更改处理的数据转换的情形下,更不值得使用者花费高价购买这类工具来实现上述的较简单的需求。

此外,值得注意的是ETL技术主要被用于创建并维护数据仓库,而针对从源数据库的一个源表向一个或多个目标数据库的一个或多个目标表进行数据抽取的应用场景,如图1所示,则必须为每个目标数据库分别配置一次ETL应用来对从源数据库抽取的源数据进行中间转换处理,这样就使得整个处理过程中需要进行多次的数据转换操作,因此实现起来颇为复杂,并且繁琐又耗时,从而会影响到数据处理的效率及系统的稳定性。

【发明内容】

有鉴于此,本发明的目的在于提供一种从一个源表到至少一个目标库的表的数据抽取系统及方法,以有效地解决现有技术中存在的从源数据库的一个源表抽取数据到至少一个目标数据库的一个或多个目标表的操作过程复杂、繁琐且耗时,从而将会影响到数据处理效率及系统稳定性的问题。

为实现上述发明目的,本发明采用的技术方案如下:

一种从一个源表到至少一个目标库的表的数据抽取系统,其包括:

读取模块,其用于根据需求从源数据库的一个源表读取所需的源数据;

中间转换模块,其用于将每次读取的所述源数据分别对应于每一个目标数据库的目标表的目标数据格式进行多次转换;以及

写入模块,其用于将每次转换后的目标数据写入对应的目标数据库;

其中,所述中间转换模块包括:

封装子模块,其用于封装所述源表的源数据对应于所述各目标数据库目标表的目标数据的转换处理过程,以使所述中间转换模块的转换处理次数为一次。

优选地,所述封装子模块为动态链接库,所述动态链接库包括:源数据接口单元,其用于参数化描述所述源表的源数据信息;目标数据接口单元,其用于参数化描述所述各目标数据库目标表对应的目标数据信息;以及,解析单元,其用于调用所述源数据接口单元和所述目标数据接口单元,以将每次读取的源数据对应解析成包括目标数据结果的目标数据结果集,所述目标数据结果中含有经过转换处理后的所述各目标数据库目标表对应的目标数据及其相应的所述目标数据信息。

优选地,所述源数据信息的参数化描述内容至少包括:所述源数据所属的源数据库名、源表名、源数据记录、以及每条源数据记录的数据长度;以及,所述目标数据信息的参数化描述内容至少包括:所述目标数据库名、目标表名、目标数据记录、以及每条目标数据记录的数据长度。

优选地,所述目标数据结果集中还包括所述各目标数据库目标表对应的目标数据记录的数目。

优选地,所述数据抽取系统还包括设置于所述源数据库和所述各目标数据库之外的中间存储模块,其用于存储经过所述中间转换模块转换后的所述各目标数据库目标表对应的目标数据的全部或者部分。

一种从一个源表到至少一个目标库的表的数据抽取方法,将源数据库的一个源表的源数据与各目标数据库目标表对应的目标数据格式的转换处理过程封装成封装子模块,所述数据抽取方法包括如下步骤:

a、连接所述源数据库;

b、从所述源表读取所需的源数据,如果其首记录非空则执行步骤c,否则结束;

c、判断所述源数据的当前记录是否已为空,如果非空则调用所述封装子模块将所述源数据一次转换处理成所述各目标数据库目标表对应的目标数据,否则结束;

d、如果转换后的所述目标数据为空则执行步骤e,否则将其分别写入对应的所述各目标数据库的目标表;以及

e、读取所述源数据的下一条记录,再重复执行步骤c。

优选地,所述封装子模块为动态链接库,所述动态链接库根据其内设置的均已参数化描述的所述源表的源数据信息与所述各目标数据库目标表对应的目标数据信息,将每次读取的所述源数据对应解析成包括目标数据结果的目标数据结果集,所述目标数据结果中含有经过转换处理后的所述各目标数据库目标表对应的目标数据及其相应的所述目标数据信息。

优选地,所述源数据信息的参数化描述内容至少包括:所述源数据所属的源数据库名、源表名、源数据记录、以及每条源数据记录的数据长度;以及,所述目标数据信息的参数化描述内容至少包括:所述目标数据库名、目标表名、目标数据记录、以及每条目标数据记录的数据长度。

优选地,所述目标数据结果集中还包括所述各目标数据库目标表对应的目标数据记录的数目。

优选地,所述数据抽取方法还包括步骤:将经过所述中间转换模块转换后的所述各目标数据库目标表对应的目标数据的全部或者部分存储于中间存储模块,所述中间存储模块设置于所述源数据库和所述各目标数据库之外。

本发明的有益效果在于:与现有的基于ETL技术的数据抽取、转换处理相比,本发明采用接口化和动态链接库(DLL,Dynamic Link Lib)技术,成功地将从一个源数据库到多个目标数据库的数据转换处理过程进行了封装,因此使用本发明所提供的系统及方法仅需通过一次数据转换即能够同时生成到多个目标数据库的数据结果集,从而极大地简化了数据转换的操作配置,提高了处理效率,并有利于促进系统的稳定。同时,本发明所提供的系统及方法还支持根据实际应用需求而将相应的数据转换规则自由定制在动态链接库中,因此提高了系统的扩展性和通用性,使得数据抽取与转换处理的设置与操作更加地灵活和方便。

【附图说明】

以下将结合附图和实施例,对本发明的技术方案作进一步的详细描述。其中:

图1是现有技术中基于ETL技术的数据抽取系统的组成结构示意图;

图2是本发明的数据抽取系统的一个较佳实施例的组成结构示意图;

图3是本发明的数据抽取系统的另一个较佳实施例的组成结构示意图;

图4是本发明的数据抽取系统的较佳实施例中的封装子模块的组成结构示意图;

图5是本发明的数据抽取方法的较佳实施例的流程图。

【具体实施方式】

请参阅图2,它是本发明的从一个源表到至少一个目标库的表的数据抽取系统的一个较佳实施例的组成结构示意图。在图2中,该数据抽取系统包括:读取模块4、中间转换模块2和写入模块5。其中,读取模块4用于从源数据库的源表1读取所需的源数据;中间转换模块2包括封装子模块21,在该封装子模块21中封装了源数据库的源表1的源数据对应于各目标数据库的目标表3的目标数据格式的转换处理过程,这样中间转换模块2的相应数据转换处理仅需一次即可;写入模块5用于将转换后的数据写入各目标数据库的目标表3。

图4揭示了通过动态链接库实现的封装子模块21的组成结构,其中的源数据接口单元211用于参数化描述源数据库的源表1的源数据信息,这样的信息内容包括读取的源数据所属的源数据库名、源表名、源数据记录以及每条源数据记录的数据长度;目标数据接口单元212用于参数化描述各目标数据库的目标表3的目标数据信息,这样的信息内容包括目标数据库名、目标表名、目标数据记录以及每条目标数据记录的数据长度;解析单元213用于调用源数据接口单元211和目标数据接口单元212,从而能够将每次读取的源数据对应解析成包括目标数据结果的目标数据结果集,该目标数据结果中含有经过转换处理后的各目标数据库的目标表3对应的目标数据及其相应的目标数据信息,在目标数据结果集中还包括各目标数据库的目标表3对应的目标数据记录的数目。

在一个较佳的实施例中,可以采用类似于C语言的伪代码实现具有上述的目标数据结果与目标数据结果集:

/*目标数据结果的结构*/

typedef struct{

    char destDbNm[15+1];/*目标数据库名*/

    char destTblNm[40+1];/*目标表名*/

    INT32 xbResRecLen;/*每条目标数据记录的数据长度*/

    char recData[REC_MAX_LEN+1];/*转换后的目标数据记录*/

}xb_res_t;

/*目标数据结果集的结构*/

typedef struct{

    INT32 resNo;/*目标数据结果集中目标数据记录的数目*/

    xb_res_t xbRes[XBRES_MAX_NO];/*目标数据结果*/

}xb_res_con_t;

采用以上直接描述的或者其他的与之相类似的设置,就可以根据实际应用需求而通过动态链接库技术和接口化技术封装源数据到多种类型的目标数据格式的转换处理过程,因此最终仅需调用封装子模块21进行一次数据转换就能同时生成预设的各目标数据库对应的目标数据,从而极大地简化了数据转换的操作配置,提高了处理效率,并有利于促进系统的稳定。此外,当在某些情形下出现应用需求发生改变时,也仅需修改其中的动态链接库而不必改造系统的其他部分,这样就可以灵活地应对需求的变更,显著提高整个系统的扩展性和通用性。

再请参阅图3,它是本发明的从一个源表到至少一个目标库的表的数据抽取系统的另一个较佳实施例的组成结构示意图。它与上述图2所示出的较佳实施例的组成结构基本类似,二者的区别之处在于:此时的数据抽取系统还包括设置于中间转换模块2与写入模块5之间的中间存储模块6,以便在将转换后的目标数据写入对应的目标数据库的目标表3之前先将这些目标数据暂存于该存储模块6中供某些应用服务调用。

图5是本发明的从一个源表到至少一个目标库的表的数据抽取方法的一个较佳实施例的流程图。请参照图5,下面将详细描述该数据抽取方法的处理步骤:

首先,根据需求在步骤S11中,对一个需要从中获取源数据的源数据库进行连接操作,其方式可以采用预先将该源数据库名、所需源数据所属的源表名、各目标数据库名、转换后的目标数据所属的目标数据库的目标表名、各数据库的物理连接路径以及运行参数配置等信息内容写入配置文件中,再通过读入此类配置文件来实现上述连接操作。而且,根据实际需求还可以更进一步地将需要处理的若干个源数据库的参数信息都写入上述的配置文件中,以便在采用本发明方法将一个源数据库的源表数据全部处理完毕之后,随后再依次连接并处理下一个源数据库。

然后,进入步骤S12,从源数据库的源表读取所需的源数据的首记录;

在步骤S13中,判断在上一个步骤S12中得到的源数据的首记录是否为空,如果其非空,则执行步骤S14;否则,表明所需的源数据目前还不存在或者尚未被更新,因此即无进一步操作的必要,直接结束。

随后,在步骤S14中,判断所需的源数据的当前记录是否已经为空,如果其非空,则执行步骤S15进行此次源数据的数据转换处理;否则,表明所需的源数据目前已经全部处理完毕,因此即无进一步操作的必要,直接结束。

在步骤S15中,调用封装子模块来进行数据转换处理,这样的封装子模块是预先已经将源表的源数据与各目标数据库目标表对应的目标数据格式的转换处理过程进行封装处理,具体可以采用动态链接库的方式。而且,在此类动态链接库中预先已对源表的源数据信息与各目标数据库目标表对应的目标数据信息进行了参数化描述,然后即可利用它们对输入的数据进行解析、转换处理后再予以输出,具体的参数化描述内容如前所述,所以在此不再赘述。

在步骤S16中,通过上述的数据转换处理后,将本次的源数据一次性地同时解析成包括目标数据结果的目标数据结果集,该目标数据结果中含有经过转换处理后的各目标数据库目标表对应的目标数据及其相应的目标数据信息,在目标数据结果集中还包括各目标数据库目标表对应的目标数据记录的数目。

随后,进入步骤S17,对于获取的目标数据结果集,首先根据其内记载的目标数据记录的数目判断该目标数据结果集是否为空,如果是空,则进入步骤S19;否则,进入步骤S18。

在步骤S18中,根据获取的目标数据结果集内目标数据结果中的记载信息,将其中的各目标数据分别写入其对应的各目标数据库的目标表中,再将本次转换后的目标数据全部写入处理完毕之后,进入步骤S19。

在步骤S19中,读取源数据的下一条记录,然后重新进入步骤S14。

在本发明方法的另一个较佳实施例中,还可以根据实际需要增加一个步骤:即,将经过中间转换模块转换后的各目标数据库目标表对应的目标数据全部或者部分存储于中间存储模块,这样的中间存储模块并非是设于源数据库和各目标数据库的内部,而是可以设于内置或者外置的计算机物理储存装置(如内存、闪存等),其具体形式也可以采用存于计算机物理空间上的文件形式,而其存储生命周期可以是暂时的(如几十秒、几分钟或几十分钟等),当然也可以是较长的时间(如几小时、甚至几天或几周等),这样就可以非常迅速或者更为方便地将所获取的目标数据中的某些关键的或敏感数据直接提供给某些应用服务使用,从而避免了它们再从目标数据库重复搜索、提取这些数据的过程,因此有利于提高应用服务的处理效率、减轻相应系统(如数据库服务器)的负担并提高其稳定性。

综上所述,与现有的基于ETL技术的数据抽取、转换处理相比,本发明所提供的系统及方法能够极大地简化数据转换的操作配置,提高处理效率,并有利于提高系统的稳定性、扩展性与通用性,使得数据抽取与转换处理操作更加灵活和方便。因此,本发明所提供的系统及方法特别适用于银行、金融、证券、电子商务等具有较大业务数据转换处理量的行业领域。

以上列举了若干具体实施例来详细阐明本发明的一种从一个源表到至少一个目标库的表的数据抽取系统及方法,这些个例仅供说明本发明的原理及其实施方式之用,而非对本发明的限制,在不脱离本发明的精神和范围的情况下,本领域的普通技术人员还可以作出各种变形和改进,因此所有等同的技术方案均应属于本发明的范畴并为本发明的各项权利要求所限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号