ETL中数据主键号的生成方法及计数器技术

技术编号:7305196 阅读:351 留言:0更新日期:2012-04-29 09:07
本发明专利技术实施例提供一种ETL中数据主键号的生成方法及计数器。该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次抽取上节点传入的数据。该次抽本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:刘岳嘉
申请(专利权)人:金蝶软件中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术