Etl中数据主键号的生成方法及计数器的制作方法

文档序号:6333030阅读:251来源:国知局
专利名称:Etl中数据主键号的生成方法及计数器的制作方法
技术领域
本发明涉及数据处理技术领域,尤其涉及一种ETL中数据主键号的生成方法及计数器。
背景技术
在数据采集过程中采用的ETL(Extraction-Transformation-Loading,数据提取、 转换和加载)工具,均提供了数据转换功能,即从一种格式的数据流转为另一种格式的数据流,通过组装一系列功能转换节点流程,可完成一项从数据源至目标数据的数据转换任务,其中,计数器节点常用于数据库表数据主键的生成,即将从上节点抽取的每条数据生成其对应的主键号,以存储在数据库中。现有技术的ETL中数据主键号的生成方法为在抽取数据后,根据固定的起始值和增长根据对数据从起始值到最大值进行主键步增。如图1所示,如果起始值和增长根据均为1,则抽取的第一条数据生成的主键号为1,第二条数据的主键号为2,一直到数据抽取完毕,最大主键号即为抽取数据的最大条数。然而,当上述主键号生成方法应用于数据量十分巨大的情况时,必须对所有数据进行全量抽取,从第一条数据一直步增至最后一条数据,该方法降低了数据抽取的性能。

发明内容
本发明实施例提供一种ETL中数据主键号的生成方法及计数器,能够实现数据的增量抽取,增强数据抽取的性能。为了解决上述技术问题,本发明实施例的技术方案如下一种ETL中数据主键号的生成方法,包括根据第一次抽取数据生成的主键号,设定第二次抽取数据的主键号的起始值;根据所述第二次抽取数据的主键号的起始值和预设的增长根据,进行主键步增生成第二次抽取数据的主键号。进一步,所述根据第一次抽取数据生成的主键号,设定第二次抽取数据的主键号的起始值,具体为根据第一次抽取数据生成的最大主键号,设定所述第二次抽取数据的主键号的起始值。进一步,所述根据第一次抽取数据生成的最大主键号,设定所述第二次抽取数据的主键号的起始值,具体为将所述第一次抽取数据生成的最大主键号加一,设定为所述第二次抽取数据的主键号的起始值。进一步,所述预设的增长根据为1。进一步,所述第二次抽取数据的主键号的最大值不大于999999999。一种计数器,包括
设定模块,用于根据第一次抽取数据生成的主键号,设定第二次抽取数据的主键号的起始值;生成模块,用于根据所述第二次抽取数据的主键号的起始值和预设的增长根据, 进行主键步增生成第二次抽取数据的主键号。进一步,所述设定模块,具体用于根据第一次抽取数据生成的最大主键号,设定所述第二次抽取数据的主键号的起始值。进一步,所述设定模块,具体用于将所述第一次抽取数据生成的最大主键号加一, 设定为所述第二次抽取数据的主键号的起始值。进一步,所述预设的增长根据为1。进一步,所述第二次抽取数据的主键号的最大值不大于999999999。现有技术的ETL中数据主键号生成方法,对于数据量十分巨大的情况,由于起始值的固定设置决定了对数据量的全量抽取方式,从而降低了数据抽取的性能。本发明实施例所提供的数据主键号的生成方法及计数器通过动态设置起始值,解决了主键冲突问题, 实现了对大量数据的增量抽取方式,增强了数据抽取的性能。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例一种ETL中数据主键号的生成方法流程图;图2是本发明实施例另一种ETL中数据主键号的生成方法流程图;图3是本发明实施例一种ETL中计数器的结构示意图。
具体实施例方式为了使本领域技术人员能进一步了解本发明的特征及技术内容,请参阅以下有关本发明的详细说明与附图,附图仅提供参考与说明,并非用来限制本发明。发明人研究发现,现有技术的ETL中数据主键号的生成方法由于起始值是固定值,所以每次抽取的第一条数据的主键号是相同的也即起始值,对于数据量十分巨大的情况,如果采用增量抽取也即分多次抽取数据,则每次抽取的第一条数据的主键号均是相同的,这样会引起主键冲突,在后续应用主键号处理该大量数据时就会出现运行错误。例如,2010年一月份进行第一次数据抽取,即抽取2010年一月份与所有的2010年一月份前的所有数据,使用计数器生成所有数据的主键号,但当到2010年二月份再次对数据进行抽取工作时,如果不对二月份以前的所有数据进行全量抽取,而只抽取2010年二月份的数据,则在对二月份的数据生成主键号时,计数器又开始从“起始值”进行计算,二月份第一条数据的主键号与第一次抽取时第一条数据的主键号相同,发生了主键冲突。因此,现有ETL的数据主键号的生成方法,对于数据量十分巨大的情况,由于起始值的固定设置决定了对数据量的全量抽取方式,从而降低了数据抽取的性能。本发明实施例所提供的数据主键号的生成方式通过动态设置起始值,解决了主键冲突问题,实现了对大量数据的增量抽取方式,增强了数据抽取的性能。下面结合附图和实施例,对本发明的技术方案进行描述。参照图1,为本发明实施例一种ETL中数据主键号的生成方法流程图。在不适于对所有数据进行一次性全量抽取的情况下,例如,数据量十分巨大的情况,应用本实施例方法可以实现对数据的多次抽取也即增量抽取,避免主键冲突。该方法可以包括步骤101,根据第一次抽取数据生成的主键号,设定第二次抽取数据的主键号的起始值。其中,“第一次”和“第二次”仅是为了区别连续的两次抽取,并非表示ETL进行的首次及第二次抽取,亦非特定的抽取顺序。在本实施例中,计数器在生成第一次抽取数据的主键号后,对该主键号进行存储。然后根据第一次抽取数据的主键号设定第二次抽取数据的主键号的起始值。该起始值需要设定为与第一次抽取数据的所有主键号不同,并且根据该起始值和增长根据进行主键步增后获得的第二次抽取数据的主键号与第一次抽取数据的主键号不同。例如,第一次抽取数据生成的最大主键号为N,则第二次抽取数据的主键号的起始值设定为N+1,其具体设定过程请参照后续实施例的描述。步骤102,根据第二次抽取数据的主键号的起始值和预设的增长根据进行主键步增生成第二次抽取数据的主键号。在计数器设定起始值后,根据预设的增长根据对起始值进行主键步增,生成第二次抽取数据的主键号。例如,如果第二次抽取数据的主键号的起始值设定为N+1,则,第二次抽取的数据中的第一条数据的主键号即为N+1,主键步增后生成的第二条数据的主键号即为“N+1+增长根据”。以此类推,此处不再赘述。如果还存在第N次抽取数据,则第N次抽取数据的主键号的生成仍然可以采用上述方法进行,其中,第N次抽取数据的主键号的起始值可以继续采用步骤101的方法,即根据第N-I次抽取数据生成的主键号设定第N次抽取数据的主键号的起始值,主键步增后生成的第N次抽取数据的主键号即为根据增长根据对起始值进行迭代递增所获得的值。本发明实施例通过动态设置起始值,使得在增量抽取时每次获得的数据的主键号均与其它次抽取时获得的主键号不同,从而避免了主键冲突,因此在大数据量的情况下,可以通过增量抽取方式增强数据抽取的性能。参照图2,为本发明实施例另一种ETL中数据主键号的生成方法流程图。本实施例以2010年每月的数据抽取为例进行说明,该方法可以包括步骤201,第N次抽取上节点传入的数据。该次抽取可以在2010年的第N个月进行,上节点传入的数据可以是在一系列数据转换节点流程中位于计数器上一节点所传入的数据。该数据抽取过程与现有技术类似,此处不再赘述。步骤202,读取第N-I次抽取数据的主键号的最大值。计数器可以在每次生成抽取数据的主键号后,存储最近一次抽取数据的主键号的最大值,在本实施例中,计数器内存储有第N-I次抽取数据的主键号的最大值,假设为a。步骤203,设定第N次抽取数据的主键号的起始值。在本实施例中,可以将第N-I次抽取数据生成的最大主键号加一,设定为用于生成第N次抽取数据的主键号的起始值,也即将a+Ι作为生成第N次抽取数据的主键号的起始值。另外,若第N次抽取数据即为第一次抽取数据,例如,步骤201中,第N次抽取数据为抽取2010年1月份的数据,该情况下仍可以按步骤202 203的方法进行,计数器中并未存储有1月份之前数据的主键号最大值,则可以预设该情况下最近一次抽取数据的主键号的最大值为“0”,则根据步骤203,生成1月份抽取数据的主键号的起始值即为“0+1”。以上步骤201与步骤202、203之间的顺序可以根据需要调整,在此并不限定。步骤204,根据起始值和预设的增长根据,对第N次抽取数据进行主键步增,生成第N次抽取数据的主键号。根据上步骤,起始值为a+Ι,预设的增长根据可以为1,当然也可以为其它数值,则主键步增即可获得第N次抽取数据的主键号,也即根据增长根据对起始值进行迭代递增。 第N次抽取的数据中第1条数据的主键号为a+Ι,第2条数据的主键号为a+1+l,第3条数据的主键号为a+1+l+l......,还可以设定主键号的最大值,一般不大于999999999。若第N+1次抽取上节点传入的数据,则按照步骤201 204所述的方法继续执行。本发明实施例通过根据上一次抽取数据的主键号的最大值动态设置生成本次抽取数据的主键号的起始值,使得在增量抽取时每次获得的数据的主键号均与其它次抽取时获得的主键号不同,从而避免了主键冲突,因此在大数据量的情况下,可以通过增量抽取方式增强数据抽取的性能。以上方法可以应用于ETL工具中计数器生成数据主键号的方法中。以上是对本发明方法实施例的详细描述,上述方法应用于ETL中,对于源于不同数据库中的数据均可以采用上述方法生成主键号,因此可以支持跨数据库的应用,数据源与目标数据库类型的改动均无需更改本抽取数据主键号的生成流程。下面对实现上述方法的计数器进行简单介绍。参见图3,为本发明实施例一种计数器的结构示意图。本实施例中,计数器包括以下模块设定模块301,用于根据第一次抽取数据生成的主键号,设定第二次抽取数据的主键号的起始值。生成模块302,用于根据所述第二次抽取数据的主键号的起始值和预设的增长根据,进行主键步增生成第二次抽取数据的主键号。本实施例中,“第一次”和“第二次”也仅是为了区别连续两次抽取的数据,并非特指某一次。计数器在生成第一次抽取数据的主键号后,可以对该主键号进行存储,然后在抽取第二次数据之前或之后,通过设定模块301设定用于生成第二次抽取数据的主键号的起始值,该起始值需要设定为与第一次抽取数据的所有主键号不同,并且根据该起始值和增长根据进行主键步增后获得的第二次抽取数据的主键号与第一次抽取数据的主键号不同。 在计数器设定起始值后,即可通过生成模块302进行主键步增,即根据增长根据对起始值进行迭代递增,生成第二次抽取数据的主键号。在本发明的另一实施例中,设定模块301,可以用于根据第一次抽取数据生成的最大主键号,设定第二次抽取数据的主键号的起始值,具体的,可以用于将所述第一次抽取数据生成的最大主键号加一,设定为第二次抽取数据的主键号的起始值。
本发明实施例通过设定模块301动态设置起始值,使得在增量抽取时生成模块 302每次获得的数据的主键号均与其它次抽取时获得的主键号不同,从而避免了主键冲突, 因此,在大数据量的情况下,可以通过增量抽取方式增强数据抽取的性能。以上装置可以应用于ETL工具中的计数器转换节点。以上计数器各模块的具体实现过程是可以参照前述方法实施例部分的描述,此处不再赘述。上述方法、装置实施例可支持跨数据库的抽取,数据源与目标数据库类型的改动均无需更改本抽取数据主键号的生成流程。以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。
权利要求
1.一种ETL中数据主键号的生成方法,其特征在于,包括根据第一次抽取数据生成的主键号,设定第二次抽取数据的主键号的起始值; 根据所述第二次抽取数据的主键号的起始值和预设的增长根据,进行主键步增生成第二次抽取数据的主键号。
2.根据权利要求1所述的方法,其特征在于,所述根据第一次抽取数据生成的主键号, 设定第二次抽取数据的主键号的起始值,具体为根据第一次抽取数据生成的最大主键号,设定所述第二次抽取数据的主键号的起始值。
3.根据权利要求2所述的方法,其特征在于,所述根据第一次抽取数据生成的最大主键号,设定所述第二次抽取数据的主键号的起始值,具体为将所述第一次抽取数据生成的最大主键号加一,设定为所述第二次抽取数据的主键号的起始值。
4.根据权利要求1至3中任意一项所述的方法,其特征在于,所述预设的增长根据为1。
5.根据权利要求1至3中任意一项所述的方法,其特征在于,所述第二次抽取数据的主键号的最大值不大于999999999。
6.一种计数器,其特征在于,包括设定模块,用于根据第一次抽取数据生成的主键号,设定第二次抽取数据的主键号的起始值;生成模块,用于根据所述第二次抽取数据的主键号的起始值和预设的增长根据,进行主键步增生成第二次抽取数据的主键号。
7.根据权利要求6所述的计数器,其特征在于,所述设定模块,具体用于根据第一次抽取数据生成的最大主键号,设定所述第二次抽取数据的主键号的起始值。
8.根据权利要求7所述的计数器,其特征在于,所述设定模块,具体用于将所述第一次抽取数据生成的最大主键号加一,设定为所述第二次抽取数据的主键号的起始值。
9.根据权利要求6至8中任意一项所述的计数器,其特征在于,所述预设的增长根据为1。
10.根据权利要求6至8中任意一项所述的计数器,其特征在于,所述第二次抽取数据的主键号的最大值不大于999999999。
全文摘要
本发明实施例提供一种ETL中数据主键号的生成方法及计数器。该ETL中数据主键号的生成方法,包括根据第一次抽取数据生成的主键号,设定第二次抽取数据的主键号的起始值;根据所述第二次抽取数据的主键号的起始值和预设的增长根据,进行主键步增生成第二次抽取数据的主键号。本发明实施例所提供的数据主键号的生成方法及计数器通过动态设置起始值,解决了主键冲突问题,实现了对大量数据的增量抽取方式,增强了数据抽取的性能。
文档编号G06F17/30GK102419754SQ20101029686
公开日2012年4月18日 申请日期2010年9月27日 优先权日2010年9月27日
发明者刘岳嘉 申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1