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

文档序号:6581878阅读:380来源:国知局
专利名称:从一个源表到至少一个目标库的表的数据抽取系统及方法
从一个源表到至少一个目标库的表的数据抽取系统及方法
技术领域
本发明涉及一种数据抽取系统及方法,尤其涉及一种从源数据库的一个源表到至 少一个目标数据库的一个或多个目标表的数据抽取系统及方法,属于数据库技术领域。
背景技术
在现有的数据库数据处理领域中,存在着一些基于 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+l] ;/* 目标数据库名 */char destTblNm[40+l] ;/* 目标表名 */INT32 XbResRecLen ;/*每条目标数据记录的数据长度*/char recData[REC_MAX_LEN+1] ;/* 转换后的目标数据记录 */}xb_res_t ;
/*目标数据结果集的结构*/typedef struct{INT32 resNo ;/*目标数据结果集中目标数据记录的数目*/xb_res_t xbRes [XBRES_MAX_N0] ;/* 目标数据结果 */} xb_res_con_t ;采用以上直接描述的或者其他的与之相类似的设置,就可以根据实际应用需求而 通过动态链接库技术和接口化技术封装源数据到多种类型的目标数据格式的转换处理过 程,因此最终仅需调用封装子模块21进行一次数据转换就能同时生成预设的各目标数据 库对应的目标数据,从而极大地简化了数据转换的操作配置,提高了处理效率,并有利于促 进系统的稳定。此外,当在某些情形下出现应用需求发生改变时,也仅需修改其中的动态链 接库而不必改造系统的其他部分,这样就可以灵活地应对需求的变更,显著提高整个系统 的扩展性和通用性。再请参阅图3,它是本发明的从一个源表到至少一个目标库的表的数据抽取系统 的另一个较佳实施例的组成结构示意图。它与上述图2所示出的较佳实施例的组成结构基 本类似,二者的区别之处在于此时的数据抽取系统还包括设置于中间转换模块2与写入 模块5之间的中间存储模块6,以便在将转换后的目标数据写入对应的目标数据库的目标 表3之前先将这些目标数据暂存于该存储模块6中供某些应用服务调用。图5是本发明的从一个源表到至少一个目标库的表的数据抽取方法的一个较佳 实施例的流程图。请参照图5,下面将详细描述该数据抽取方法的处理步骤首先,根据需求在步骤Sll中,对一个需要从中获取源数据的源数据库进行连接 操作,其方式可以采用预先将该源数据库名、所需源数据所属的源表名、各目标数据库名、 转换后的目标数据所属的目标数据库的目标表名、各数据库的物理连接路径以及运行参数 配置等信息内容写入配置文件中,再通过读入此类配置文件来实现上述连接操作。而且,根 据实际需求还可以更进一步地将需要处理的若干个源数据库的参数信息都写入上述的配 置文件中,以便在采用本发明方法将一个源数据库的源表数据全部处理完毕之后,随后再 依次连接并处理下一个源数据库。然后,进入步骤S12,从源数据库的源表读取所需的源数据的首记录;在步骤S13中,判断在上一个步骤S12中得到的源数据的首记录是否为空,如果其 非空,则执行步骤S14;否则,表明所需的源数据目前还不存在或者尚未被更新,因此即无 进一步操作的必要,直接结束。随后,在步骤S14中,判断所需的源数据的当前记录是否已经为空,如果其非空, 则执行步骤S15进行此次源数据的数据转换处理;否则,表明所需的源数据目前已经全部 处理完毕,因此即无进一步操作的必要,直接结束。在步骤S15中,调用封装子模块来进行数据转换处理,这样的封装子模块是预先 已经将源表的源数据与各目标数据库目标表对应的目标数据格式的转换处理过程进行封 装处理,具体可以采用动态链接库的方式。而且,在此类动态链接库中预先已对源表的源数 据信息与各目标数据库目标表对应的目标数据信息进行了参数化描述,然后即可利用它们 对输入的数据进行解析、转换处理后再予以输出,具体的参数化描述内容如前所述,所以在 此不再赘述。
在步骤S16中,通过上述的数据转换处理后,将本次的源数据一次性地同时解析 成包括目标数据结果的目标数据结果集,该目标数据结果中含有经过转换处理后的各目标 数据库目标表对应的目标数据及其相应的目标数据信息,在目标数据结果集中还包括各目 标数据库目标表对应的目标数据记录的数目。随后,进入步骤S17,对于获取的目标数据结果集,首先根据其内记载的目标数据 记录的数目判断该目标数据结果集是否为空,如果是空,则进入步骤S19 ;否则,进入步骤 S18。在步骤S18中,根据获取的目标数据结果集内目标数据结果中的记载信息,将其 中的各目标数据分别写入其对应的各目标数据库的目标表中,再将本次转换后的目标数据 全部写入处理完毕之后,进入步骤S19。在步骤S19中,读取源数据的下一条记录,然后重新进入步骤S14。在本发明方法的另一个较佳实施例中,还可以根据实际需要增加一个步骤即,将 经过中间转换模块转换后的各目标数据库目标表对应的目标数据全部或者部分存储于中 间存储模块,这样的中间存储模块并非是设于源数据库和各目标数据库的内部,而是可以 设于内置或者外置的计算机物理储存装置(如内存、闪存等),其具体形式也可以采用存于 计算机物理空间上的文件形式,而其存储生命周期可以是暂时的(如几十秒、几分钟或几 十分钟等),当然也可以是较长的时间(如几小时、甚至几天或几周等),这样就可以非常迅 速或者更为方便地将所获取的目标数据中的某些关键的或敏感数据直接提供给某些应用 服务使用,从而避免了它们再从目标数据库重复搜索、提取这些数据的过程,因此有利于提 高应用服务的处理效率、减轻相应系统(如数据库服务器)的负担并提高其稳定性。综上所述,与现有的基于ETL技术的数据抽取、转换处理相比,本发明所提供的系 统及方法能够极大地简化数据转换的操作配置,提高处理效率,并有利于提高系统的稳定 性、扩展性与通用性,使得数据抽取与转换处理操作更加灵活和方便。因此,本发明所提供 的系统及方法特别适用于银行、金融、证券、电子商务等具有较大业务数据转换处理量的行 业领域。以上列举了若干具体实施例来详细阐明本发明的一种从一个源表到至少一个目 标库的表的数据抽取系统及方法,这些个例仅供说明本发明的原理及其实施方式之用,而 非对本发明的限制,在不脱离本发明的精神和范围的情况下,本领域的普通技术人员还可 以作出各种变形和改进,因此所有等同的技术方案均应属于本发明的范畴并为本发明的各 项权利要求所限定。
权利要求
1.一种从一个源表到至少一个目标库的表的数据抽取系统,其包括读取模块,其用于根据需求从源数据库的一个源表读取所需的源数据;中间转换模块,其用于将每次读取的所述源数据分别对应于每一个目标数据库的目标 表的目标数据格式进行多次转换;以及写入模块,其用于将每次转换后的目标数据写入对应的目标数据库的目标表;其特征在于,所述中间转换模块包括封装子模块,其用于封装所述源表的源数据对应于所述各目标数据库目标表的目标数 据的转换处理过程,以使所述中间转换模块的转换处理次数为一次。
2.根据权利要求1所述的数据抽取系统,其特征在于,所述封装子模块为动态链接库, 所述动态链接库包括源数据接口单元,其用于参数化描述所述源表的源数据信息;目标数据接口单元,其用于参数化描述所述各目标数据库目标表对应的目标数据信 息;以及解析单元,其用于调用所述源数据接口单元和所述目标数据接口单元,以将每次读取 的源数据对应解析成包括目标数据结果的目标数据结果集,所述目标数据结果中含有经过 转换处理后的所述各目标数据库目标表对应的目标数据及其相应的所述目标数据信息。
3.根据权利要求2所述的数据抽取系统,其特征在于,所述源数据信息的参数化描述 内容至少包括所述源数据所属的源数据库名、源表名、源数据记录、以及每条源数据记录 的数据长度;以及所述目标数据信息的参数化描述内容至少包括所述目标数据库名、目标表名、目标数 据记录、以及每条目标数据记录的数据长度。
4.根据权利要求2所述的数据抽取系统,其特征在于,所述目标数据结果集中还包括 所述各目标数据库目标表对应的目标数据记录的数目。
5.根据权利要求1-4中任一项所述的数据抽取系统,其特征在于还包括设置于所述源 数据库和所述各目标数据库之外的中间存储模块,其用于存储经过所述中间转换模块转换 后的所述各目标数据库目标表对应的目标数据的全部或者部分。
6.一种从一个源表到至少一个目标库的表的数据抽取方法,其特征在于,将源数据库 的一个源表的源数据与各目标数据库目标表对应的目标数据格式的转换处理过程封装成 封装子模块,所述数据抽取方法包括如下步骤a、连接所述源数据库;b、从所述源表读取所需的源数据,如果其首记录非空则执行步骤c,否则结束;C、判断所述源数据的当前记录是否已为空,如果非空则调用所述封装子模块将所述源 数据一次转换处理成所述各目标数据库目标表对应的目标数据,否则结束;d、如果转换后的所述目标数据为空则执行步骤e,否则将其分别写入对应的所述各目 标数据库的目标表;以及e、读取所述源数据的下一条记录,再重复执行步骤C。
7.根据权利要求6所述的数据抽取方法,其特征在于,所述封装子模块为动态链接库, 所述动态链接库根据其内设置的均已参数化描述的所述源表的源数据信息与所述各目标 数据库目标表对应的目标数据信息,将每次读取的所述源数据对应解析成包括目标数据结果的目标数据结果集,所述目标数据结果中含有经过转换处理后的所述各目标数据库目标 表对应的目标数据及其相应的所述目标数据信息。
8.根据权利要求7所述的数据抽取方法,其特征在于,所述源数据信息的参数化描述 内容至少包括所述源数据所属的源数据库名、源表名、源数据记录、以及每条源数据记录 的数据长度;以及所述目标数据信息的参数化描述内容至少包括所述目标数据库名、目标表名、目标数 据记录、以及每条目标数据记录的数据长度。
9.根据权利要求7所述的数据抽取方法,其特征在于,所述目标数据结果集中还包括 所述各目标数据库目标表对应的目标数据记录的数目。
10.根据权利要求6-9任一项所述的数据抽取方法,其特征在于还包括步骤将经过所 述中间转换模块转换后的所述各目标数据库目标表对应的目标数据的全部或者部分存储 于中间存储模块,所述中间存储模块设置于所述源数据库和所述各目标数据库之外。
全文摘要
本发明公开了一种从一个源表到至少一个目标库的表的数据抽取系统及方法,所述系统包括读取模块、中间转换模块以及写入模块,所述中间转换模块包括用于封装源表的源数据对应于各目标数据库目标表的目标数据格式的转换处理过程的封装子模块,以使中间转换模块的转换处理次数为一次。所述数据抽取方法包括步骤根据需求连接一个源表读取源数据;通过封装子模块将所述源数据一次转换处理成各目标数据库目标表对应的目标数据;以及将转换后的目标数据分别写入其对应的目标数据库目标表。本发明极大地简化了数据转换的操作配置,提高了处理效率,本发明同时还能有效提高整个系统的稳定性、扩展性和通用性,使得数据抽取与转换处理操作更加灵活和方便。
文档编号G06F17/30GK102004744SQ20091019502
公开日2011年4月6日 申请日期2009年9月2日 优先权日2009年9月2日
发明者杨燕明, 陈林, 马东良 申请人:中国银联股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1