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

文档序号:14835994发布日期:2018-06-30 12:25阅读:184来源:国知局
一种数据抽取方法及装置与流程

本发明涉及数据处理技术领域,特别是涉及一种数据抽取方法及装置。



背景技术:

随着互联网技术的发展,越来越多的系统之间需要进行数据传输和应用,这就需要将某些系统的数据进行抽取并导入或导出到对应的目的系统。

现有的数据抽取方案通常是通过以下步骤实现的:识别需要导出的源系统数据表范围;编写导出导入语句,导出DMP文件传到目标系统,或者导入DMP文件。现有数据抽取方案整个处理流程都需要操作人员进行控制和执行,这样会由于人工干预使得数据抽取效率较低。并且,对于大量数据表的导出导入过程容易出错,一旦导出的DPM文件有问题,对于一次性导出数百张甚至数千张表,那么所有的表都将无法成功导出和导入,使得效率较低并且准确性较低;由于每张数据表的结构不同,现有的方案中使用数据抽取语句无法实现抽取所有表中符合需求的一部分数据,会出现数据抽取错误的影响。



技术实现要素:

针对于上述问题,本发明提供一种数据抽取方法及装置,实现了数据表分区抽取,提高了数据抽取效率和减少数据抽取错误的目的。

为了实现上述目的,本发明提供了如下技术方案:

一种数据抽取方法,包括:

对获取的源系统的数据抽取任务进行解析,并按照数据分区粒度生成与所述数据抽取任务对应的数据抽取列表;

根据所述数据抽取列表中的数据容量,确定对所述源系统的数据抽取方式;

若采用第一预设数据抽取方式进行数据抽取时,将每个所述数据分区的数据进行抽取,并生成第一数据文件,将所述第一数据文件保存至目标系统;

若采用第二预设数据抽取方式进行数据抽取时,对所述源系统进行数据抽取,并将抽取到的数据文件保存至所述目标系统。

优选地,其特征在于,所述对获取的源系统的数据抽取任务进行解析,并按照数据分区粒度生成与所述数据抽取任务对应的数据抽取列表,包括:

对获取的数据抽取任务进行解析,得到与所述数据抽取任务对应的配置信息;

根据所述配置信息对所述数据抽取任务进行分区,将每一个分区的数据抽取任务生成与所述分区对应的数据抽取子任务;

将各个数据抽取子任务生成数据抽取列表。

优选地,在将数据文件保存至所述目标系统之前,还包括:

判断所述目标系统是否存在与所述数据文件对应的分区,若不存在,则在所述目标系统中添加与所述数据文件对应的分区;

若存在,则查找到所述目标系统中与所述数据文件对应的目标分区,并将所述目标分区内的数据进行清空。

优选地,所述根据所述数据抽取列表中的数据容量,确定对所述源系统的数据抽取方式,包括:

判断所述数据抽取列表中的数据容量是否大于预设数据量阈值,如果是,则对所述源系统采用第一预设数据抽取方式进行数据抽取,反之,则采用第二预设数据抽取方式进行数据抽取;

所述第一数据抽取方式为DMP文件抽取方式,所述第二数据抽取方式为DBLIK数据抽取方式。

优选地,当将所述第一数据文件保存至目标系统时,还包括:

通过预设的数据传输方式将所述第一数据文件按预设的并行度并行传输至所述目标系统;

判断所述目标系统是否成功根据所述数据抽取列表并行获取所述第一数据文件,如果是,则继续上传所述第一数据文件;如果否,则判断所述第一数据文件是否存在错误。

一种数据抽取装置,包括:

生成模块,用于对获取的源系统的数据抽取任务进行解析,并按照数据分区粒度生成与所述数据抽取任务对应的数据抽取列表;

确定模块,用于根据所述数据抽取列表中的数据容量,确定对所述源系统的数据抽取方式;

第一抽取模块,用于若采用第一预设数据抽取方式进行数据抽取时,将每个所述数据分区的数据进行抽取,并生成第一数据文件,将所述第一数据文件保存至目标系统;

第二抽取模块,用于若采用第二预设数据抽取方式进行数据抽取时,对所述源系统进行数据抽取,并将抽取到的数据文件保存至所述目标系统。

优选地,所述生成模块包括:

解析单元,用于对获取的数据抽取任务进行解析,得到与所述数据抽取任务对应的配置信息;

分区单元,用于根据所述配置信息对所述数据抽取任务进行分区,将每一个分区的数据抽取任务生成与所述分区对应的数据抽取子任务;

生成单元,用于将各个数据抽取子任务生成数据抽取列表。

优选地,在将数据文件保存至所述目标系统之前,还包括:

判断模块,用于判断所述目标系统是否存在与所述数据文件对应的分区,若不存在,则在所述目标系统中添加与所述数据文件对应的分区;

若存在,则查找到所述目标系统中与所述数据文件对应的目标分区,并将所述目标分区内的数据进行清空。

优选地,所述确定模块包括:

容量判断单元,用于判断所述数据抽取列表中的数据容量是否大于预设数据量阈值,如果是,则对所述源系统采用第一预设数据抽取方式进行数据抽取,反之,则采用第二预设数据抽取方式进行数据抽取;

所述第一数据抽取方式为DMP文件抽取方式,所述第二数据抽取方式为DBLIK数据抽取方式。

优选地,当将所述第一数据文件保存至目标系统时,还包括:

传输单元,用于通过预设的数据传输方式将所述第一数据文件按预设的并行度并行传输至所述目标系统;

获取判断单元,用于判断所述目标系统是否成功根据所述数据抽取列表并行获取所述第一数据文件,如果是,则继续上传所述第一数据文件;如果否,则判断所述第一数据文件是否存在错误。

相较于现有技术,本发明提供的数据抽取方法及装置,通过对获取的源系统的数据抽取任务进行解析,将数据抽取任务按照分区粒度分成一条条子任务最终生成任务抽取列表,这样分区并行对数据进行抽取也就是对数据进行导入或导出时,可以解决现有技术中将全部待抽取的数据进行抽取而导致的数据抽取效率低的问题。同时设置两种数据抽取方式,可以根据数据容量采用对应的数据抽取方式使得抽取效率提高的同时,无需人工干预,也可以实现源系统和目标系统的数据同步,也减少了数据抽取的错误影响。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

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

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

图3为本发明实施例提供的一种数据抽取装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有设定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。

本发明实施例提供了一种数据抽取方法,参见图1,该方法可以包括以下步骤:

S11、对获取的源系统的数据抽取任务进行解析,并按照数据分区粒度生成与所述数据抽取任务对应的数据抽取列表;

在本发明的另一实施例中还提供了一种数据抽取列表生成方法,可以包括以下步骤:

对获取的数据抽取任务进行解析,得到与所述数据抽取任务对应的配置信息;

根据所述配置信息对所述数据抽取任务进行分区,将每一个分区的数据抽取任务生成与所述分区对应的数据抽取子任务;

将各个数据抽取子任务生成数据抽取列表。

对前端配置的数据抽取任务进行解析,其中,数据抽取任务为前端任务人员根据需要,选择表范围、日期范围、地域范围等,生成一个数据抽取任务,在本发明实施例中数据抽取可以具体为数据导出或者数据导入。

然后,后台会通过预设代码,例如p_gen_task_file解析该数据抽取任务的配置信息,按照一个子分区生成一条数据出去子任务的方式,最终生成数据抽取列表,即该数据抽取列表中包括多个数据抽取子任务。

需要说明的是,p_gen_task_file只是解析前端配置的导入任务,生成子任务(文件列表)的程序;实际导出的程序是exp_process.sh,这个shell会读取子任务(文件列表),根据设置的并行度,每个子任务都使用expdp调起导出dmp,比如并行度设置为10,那么同一时刻就有十个expdp语句在后台运行,生成10个dmp文件;导入的程序是imp_process.sh,过程是读取子任务(文件列表),根据设置的并行度,每个子任务都使用impdp调起导入。

S12、根据所述数据抽取列表中的数据容量,确定对所述源系统的数据抽取方式;

本发明实施例还提供了一种数据抽取方式确定方法,可以包括:

判断所述数据抽取列表中的数据容量是否大于预设数据量阈值,如果是,则对所述源系统采用第一预设数据抽取方式进行数据抽取,反之,则采用第二预设数据抽取方式进行数据抽取;

所述第一数据抽取方式为DMP文件抽取方式,所述第二数据抽取方式为DBLIK数据抽取方式。

针对数据抽取列表的数据容量大小选择对应的数据抽取方式,数据量小的采用DBLIK数据抽取方式,数据量大的采用DMP文件方式,数据量的大小是以预设阈值进行判断的,例如,一般把数据量小于100M的认为是数据量小,会把数据量小的表配置在一张表供程序使用。

S13、若采用第一预设数据抽取方式进行数据抽取时,将每个所述数据分区的数据进行抽取,并生成第一数据文件,将所述第一数据文件保存至目标系统;

S14、若采用第二预设数据抽取方式进行数据抽取时,对所述源系统进行数据抽取,并将抽取到的数据文件保存至所述目标系统。

举例说明,在对数据进行抽取时,导出文件列表(EXP_TASK_FILES)设计如下,主键为DMP_TASK_ID和DMP_FILENAME,该表是创建在源系统,提供导出文件信息,记录导出的文件状态,每条记录对应一个分区或是一张表(无分区的表),EXP_TASK_FILES是目标系统程序通过DBLINK插入的,那么对于目标系统和源系统无法使用DBLINK的情况,需要目标系统和源系统约定规则,源系统自行按约定规则生成DMP文件即可。

本发明提供的数据抽取方法,通过对获取的源系统的数据抽取任务进行解析,将数据抽取任务按照分区粒度分成一条条子任务最终生成任务抽取列表,这样分区并行对数据进行抽取也就是对数据进行导入或导出时,可以解决现有技术中将全部待抽取的数据进行抽取而导致的数据抽取效率低的问题。同时设置两种数据抽取方式,可以根据数据容量采用对应的数据抽取方式使得抽取效率提高的同时,无需人工干预,也可以实现源系统和目标系统的数据同步,也减少了数据抽取的错误影响。

在本发明实施例中还提供了一种分区添加和清理方法,可以包括:

判断所述目标系统是否存在与所述数据文件对应的分区,若不存在,则在所述目标系统中添加与所述数据文件对应的分区;

若存在,则查找到所述目标系统中与所述数据文件对应的目标分区,并将所述目标分区内的数据进行清空。

在生成数据文件后,与该数据文件对应的分区有可能在目标系统中并不存在,那么就需要判断该分区是否存在,如果不存在,就需要在目标系统进行添加;如果存在,需要对该分区进行清理,将该分区原来的数据都删除掉。对于无分区的表,在数据文件导入之前会清空整张表数据。

不分区的表基本数据量都很小,这类表基本可以使用dblink方式进行数据抽取,也可以使用dmp文件方式,只生成一个dmp;另外这类没有子分区的表,就递延使用最细粒度生成子任务(文件列表),比如不分区表,那么子任务(文件列表)就只有一条,即表本身;对于只有单一分区(不是复合分区,即没有子分区)的表,那么子任务(文件列表)条数就是单一分区数。对于复合分区的表,那么子任务(文件列表)条数就是子分区数。

在本发明实施例中还提供了一种数据文件传输方法,可以包括:

通过预设的数据传输方式将所述第一数据文件按预设的并行度并行传输至所述目标系统;

判断所述目标系统是否成功根据所述数据抽取列表并行获取所述第一数据文件,如果是,则继续上传所述第一数据文件;如果否,则判断所述第一数据文件是否存在错误。

在本发明实施例中预设分数据传输方式为FTP(File Transfer Protocol,文件传输协议),将FTP用来传输dmp文件到目标系统。具体的,按照设置的并行度并行将生成的DMP文件FTP到目标系统;如果FTP成功,那么会置imp_task_files中文件状态为已就绪,供导入功能使用:

对于目标系统和源系统可以DBLINK的情况,是源系统通过DBKLINK执行更新文件状态为“已就绪”;

对于目标系统和源系统无法DBLINK的情况,那么目标系统通过判断目标系统接收目录下是否存在文件名为DMP_TASK_ID+源系统名的空文件来确定DMP_TASK_ID中涉及源系统的表是否已经全部接收成功,如果存在那么目标系统置所有该任务下的所有源系统的文件状态为“已就绪”。

在数据抽取过程中的数据导入功能分为了DMP文件方式和DBLINK方式:

DMP文件方式:

目标系统对于导入文件列表中文件状态为“已就绪”,对应分区已经处理的,根据配置的并行度参数执行导入;

当数据量偏大的时,选择DMP文件方式,每个子分区都会导出一个DMP文件,没有分区的表导出整张表数据生成DMP文件,源系统通过FTP这种预设的传输格式将DMP文件传到目标系统,DMP文件方式的导入导出的优点在于可以支持断点续导,如果导出导入报错,程序会自动识别进行重新导出导入,并且由于支持断点续导可以使得避开批量高峰时段,这样会使得文件在导入导出过程中效率更高。

DBLINK方式:

对于目标系统和源系统可以使用DBLINK连接的情况,提供DBLINK方式的数据抽取方式,具体配置数据为:cfg_value为具体表名,part_col为主分区字段,subpart_col为子分区字段,根据该配置信息和生成的导入文件列表将这些信息拼接成select语句,根据设置的并行度通过dbms_scheduler.create_job并行执行不同的select语句实现数据从源系统到目标系统的抽取。

本发明实施例还提供了另一种数据抽取方式,参见图2,主要包括了:

S21、数据导入配置步骤;

S22、导入配置解析步骤;

S23、数据导出步骤;

S24、文件传输步骤;

S25、数据导入步骤;

S26、前端展现步骤。

在S21数据导入配置步骤中,通过前端界面提供的数据表范围、日期范围,所属省范围配置数据导入任务;

在S22导入配置解析步骤中,根据后台加工的分区信息,解析数据导入配置,生产对应的导出导入文件列表,每个分区或每张表(无分区的表)对应一条记录;

在S23数据导出步骤中,根据导出文件列表并执行导出,每条记录生成一个DMP文件;

在S24文件传输步骤中,将生成的DMP文件FTP到目标系统,并更新文件状态;

在S25数据导入步骤中,根据导入文件列表,执行DMP文件导入或是直接DBLINK到源系统执行数据导入;

在S26前端展现步骤中,前端会展现配置的导入任务的执行状态,并提供每张表的已经导入的分区列表。

传统的数据抽取整个流程都需要人工干预。需要从确定数据范围、编写执行语句、执行导出、生成DMP文件、执行导入,一整套流程都需要操作人员一步步执行,耗时耗力,效率低下,而本发明实施例只需要在前端配置好数据范围,后续操作全部程序自动化无需人工干预。

对于大量数据表的导出导入过程容易出错,一旦导出的DMP文件有问题,对于一次性导数百张设置数千张表,那么所有的表都将无法成功导出导入,而要整体重新执行导出导入,而通过本发明来实现导出和导入时,导出的文件最细粒度到子分区级别,每个子分区生成一个DMP文件,程序将DMP文件一一传到目标系统,在目标系统端,有程序轮循守护监控是否有新文件,若有就自动掉起导入;导出导入并行度通过参数控制,一个文件导入成功,后续会自动调动起新的导入进程,控制在参数设定的并行度内,避免因高并行导致系统负荷多大导致宕机,文件与文件之间导出导入互不影响。如果个别分区有问题那么不会影响到其他分区的导出导入。

本发明的实施例会通过导出导入进程存在与否来判断是否已经完成文件导出导入,自动读取生成的日志文件,查询错误关键字来判定是否成功导出导入。并且由于最细粒度可以在子分区级别,所以将数据抽取需求拆分成众多子分区导出导入,从而实现抽取数据表的部分数据,而不必整张表全部导出导入。而且由于日常表结构的差异,在数据抽取程序的实现过程中,程序自动在源系统和目标系统之间进行同步的方式,使得数据抽取过程效率更高无需人工干预方式简洁。

与本发明实施例提供的数据抽取方法相对应,本发明的实施例中还提供了一种数据抽取装置,参见图3,包括:

生成模块1,用于对获取的源系统的数据抽取任务进行解析,并按照数据分区粒度生成与所述数据抽取任务对应的数据抽取列表;

确定模块2,用于根据所述数据抽取列表中的数据容量,确定对所述源系统的数据抽取方式;

第一抽取模块3,用于若采用第一预设数据抽取方式进行数据抽取时,将每个所述数据分区的数据进行抽取,并生成第一数据文件,将所述第一数据文件保存至目标系统;

第二抽取模块4,用于若采用第二预设数据抽取方式进行数据抽取时,对所述源系统进行数据抽取,并将抽取到的数据文件保存至所述目标系统。

可选的,在本发明另一实施例中,所述生成模块包括:

解析单元,用于对获取的数据抽取任务进行解析,得到与所述数据抽取任务对应的配置信息;

分区单元,用于根据所述配置信息对所述数据抽取任务进行分区,将每一个分区的数据抽取任务生成与所述分区对应的数据抽取子任务;

生成单元,用于将各个数据抽取子任务生成数据抽取列表。

可选的,在本发明另一实施例中,在将数据文件保存至所述目标系统之前,还包括:

判断模块,用于判断所述目标系统是否存在与所述数据文件对应的分区,若不存在,则在所述目标系统中添加与所述数据文件对应的分区;

若存在,则查找到所述目标系统中与所述数据文件对应的目标分区,并将所述目标分区内的数据进行清空。

可选的,在本发明另一实施例中,所述确定模块包括:

容量判断单元,用于判断所述数据抽取列表中的数据容量是否大于预设数据量阈值,如果是,则对所述源系统采用第一预设数据抽取方式进行数据抽取,反之,则采用第二预设数据抽取方式进行数据抽取;

所述第一数据抽取方式为DMP文件抽取方式,所述第二数据抽取方式为DBLIK数据抽取方式。

可选的,在本发明另一实施例中,当将所述第一数据文件保存至目标系统时,还包括:

传输单元,用于通过预设的数据传输方式将所述第一数据文件按预设的并行度并行传输至所述目标系统;

获取判断单元,用于判断所述目标系统是否成功根据所述数据抽取列表并行获取所述第一数据文件,如果是,则继续上传所述第一数据文件;如果否,则判断所述第一数据文件是否存在错误。

本发明提供的数据抽取装置,通过对获取的源系统的数据抽取任务进行解析,将数据抽取任务按照分区粒度分成一条条子任务最终生成任务抽取列表,这样分区并行对数据进行抽取也就是对数据进行导入或导出时,可以解决现有技术中将全部待抽取的数据进行抽取而导致的数据抽取效率低的问题。同时设置两种数据抽取方式,可以根据数据容量采用对应的数据抽取方式使得抽取效率提高的同时,无需人工干预,也可以实现源系统和目标系统的数据同步,也减少了数据抽取的错误影响。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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