支持分布式多文件导入的系统及方法与流程

文档序号:11064848阅读:965来源:国知局
支持分布式多文件导入的系统及方法与制造工艺

本发明涉及对多文件处理的研究领域,特别涉及一种支持分布式多文件导入的系统及方法。



背景技术:

随着信息化的发展,各企业间都出现了各种功能的企业化软件,数据导入是数据的重要来源。随着数据量的积累,需要导入的数据量也越来越大,这些数据有可能是以文档的方式保存,如excel文档、csv文档、word文档、txt文档等等。软件对文档进行数据读取,对数据进行验证,转换数据结构,把数据批量插入到数据库,形成系统数据。

目前对于数据文件的导入实现方法主要是两种:

在客户端读取文件数据,对数据进行验证后形成结构化的数据,将数据传输到服务端,对数据进行批量插入。该实现方法对于数据量小的文件,在客户端进行读取验证是完全没问题;但是如果对于大文件的数据导入,在进行文件数据读取时会消耗客户端的大量资源,导致系统卡顿、不能正常使用,甚至系统内存溢出导致系统崩溃。

在服务端进行大文件数据的读取,通常服务器的配置较好。对于单个大文件数据读取,相对于服务器资源占用较少,不会对服务器造成影响;但同时(并发)处理多个大文件数据读取时,则会占用服务器大量的资源,有可能直接影响其他客户端对于系统的使用,影响系统使用体验。如果对于占用的资源不能及时的释放,可能最终导致服务器崩溃,对系统的影响更是致命的。

针对以上风险,我们需要一种支持分布式多文件导入的方法,以解决对于大文件数据导入的问题。



技术实现要素:

本发明的主要目的在于克服现有技术的缺点与不足,提供一种支持分布式多文件导入的系统及方法,该方法支持对文件的传输、数据读取、数据验证、数据结构化、数据传输、文件保存。

为了达到上述目的,本发明采用以下技术方案:

本发明的一种支持分布式多文件导入的系统,包括服务层、业务处理层以及数据库,所述服务层,为用户体现了服务的接口;所述业务处理层,对业务数据进行处理;所述数据库,记录导入服务的一些基础数据,并保存文件的临时数据,文件数据读取出来后都保存在数据库中,后续的数据验证,导入都直接操作数据库数据;

所述服务层包括文件保存服务模块、数据读取与验证请求模块、以及目标数据传输模块;所述文件保存服务模块,用于提供给用户上传文件的服务,可单独使用该服务,也可以作为文件服务器,用作保存文件;所述数据读取与验证请求模块,用于用户在完成文件上传后,调用该请求把文件数据读取出来并批量插入到数据库中,并执行验证存储过程以进行数据验证;所述目标数据传输模块,用于在执行完成数据插入后,读取数据并对数据进行结构化整理,并将数据返回给用户;

所述业务处理层包括文件读取组件、消息队列组件、数据验证组件、以及数据库操作组件;所述文件读取组件,用于对多种格式的文档进行读取,并保证读取的组件可扩展;所述消息队列组件,用于根据服务所分配的资源,对服务的使用做限制,同时对并发数根据服务器资源进行配置,当并发数量大于配置数时,服务的请求将进入消息队列,只有之前请求的服务完成文件读取,并释放资源后,请求从消息队列调出并执行请求;所述数据验证组件,用作对数据的验证,数据验证的方法由存储过程实现,而存储过程与数据类别验证的映射关系会保存在数据表中,该组件的最大作用就是处理存储过程与数据类别验证的映射关系,并执行存续过程进行数据验证;所述数据库操作组件,是对数据库访问、操作的类,该服务中所有对数据库的操作最终都会应用该组件进行实现,包括执行数据验证的存储过程。

作为优选的技术方案,所述文件读取组件是对txt文件、excel文件、csv文件、word格式文件的读取。

作为优选的技术方案,所述数据库为轻量级数据库,选用Mysql数据库或者微软的Access。

本发明还公开了一种支持分布式多文件导入的方法,包括下述步骤:

S1、请求文件保存服务,对文件进行上传,完成上传后,把文件记录保存到数据库中;

S2、请求数据读取与数据验证:

S2.1、收到请求后,服务首先根据当前请求的用户数判断是否超过配置的最大数量,如果大于则把请求插入到消息队列中,等待前面请求的用户完成后,才能处理请求;

S2.2、数据读取与插入数据库,调用文件读取组件,读取文件的数据,并根据读取出来的数据结构在数据库中生成对应的临时表,将数据批量插入到临时表中,并释放读取文件的资源;

S2.3、根据请求中的数据类型,根据映射关系找到该数据类型的数据验证存储过程,并调用存储过程,将不符合规范的数据抽取到数据错误的验证表,并在临时表中删除这些数据;

S3、最终数据的返回,读取验证之后的数据,并返回最终的数据给用户,用户可以直接拿到数据做批量插入,从而完成文件数据导入;

S4、完成数据导入后,删除导入服务的临时数据、临时表结构、临时配置数据。

作为优选的技术方案,步骤S2.2中,具体为:以数据表格式从文档中读取出数据,数据表包括了数据行与数据列,根据数据列的数量定义临时表,表名和栏位名称的定义由规则定义在数据库中生成物理表,并在数据库中记录文件名与数据表的映射关系、文件数据栏位与临时表栏位的映射关系,然后把数据都插入到临时表中,完成数据库对文件数据的存储,同时根据该结构生成一个记录异常数据的数据表,最后释放读取文件的资源。

作为优选的技术方案,步骤S3中,步骤S2.3中具体为:

在确定数据要求与数据格式的情况下,通过数据库存储过程对数据进行验证筛选,数据验证的存储过程通过创建历史表时产生的映射关系,可以确定表结构的信息,根据验证的规则,把异常数据抽取到对应的异常数据表,其中在生成临时表的同时生成了对应的异常数据表。作为优选的技术方案,步骤S3中,在读取验证的数据时,进行分批次读取,每批次读取N条数据,数据数可配置。

作为优选的技术方案,步骤S3中,还包括下述步骤:

把数据转换成用户指定的数据结构,所述数据结构是与数据格式相对应的实体。

本发明与现有技术相比,具有如下优点和有益效果:

1.本服务不依赖任何的程序或系统软件,可随时引用或抛弃;

2.本发明可以读取多种不同格式的文档数据,包括excel、csv、word、txt等,并有很强的扩展性,能轻易扩展读取更多文档格式的数据;

3.本发明适合文件数据导入的功能,而且不会影响到系统服务端和客户端的使用;并且增加了易扩展的数据验证方法,让文件数据导入更简单;

4.本发明不用担心并发量大时,会导致服务器的资源利用问题,导致程序崩溃。

附图说明

图1是本发明的服务结构示意图;

图2是本发明的功能流程图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例

为实现支持分布式多文件导入服务,采取分布式的技术架构。整套技术方案包括了:数据传输服务、文件读取组件、消息队列组件、轻量级数据库。

数据传输服务可以采用微软的WCF、WebService、Socket等通信服务,以满足对文件的传输和数据的传输,保证传输的稳定性。

文件读取组件,目前主要涵盖了对txt文件、excel文件、csv文件、word文件等格式文件的读取。在实现过程采用设计模式进行设计,保证读取组件的可扩展性。

由于服务器的资源是有限的,会根据服务所分配的资源,对服务的使用(最主要是控制文件读取的数量)做限制,以保证服务能正常使用。所以引用了消息队列的组件,以解决该问题。并发数可以根据服务器资源进行配置。当并发数量大于配置数时,服务的请求将进入消息队列,只有之前请求的服务完成文件读取,并释放资源后,请求从消息队列调出并执行请求。

为该服务配置的轻量级数据库,可以选用Mysql数据库或者微软的Access,数据库中的作用有:

1.记录导入服务的一些基础数据,如配置数据,文件保存的数据等;

2.保存文件的临时数据,文件数据读取出来后都保存在数据库中,后续的数据验证,导入都直接操作数据库数据,减少对服务器资源的占用;

3.数据验证的工作利用存储过程验证,存储过程可以灵活执行,只需要执行数据脚本即可生成,不需要依赖服务程序。

如图1所示,本发明的结构图,服务层体现了服务的接口,业务处理层体现了业务处理中所需要引用的组件,及数据库的使用:

1.服务层,为用户体现了该服务的接口。文件保存服务,提供给用户上传文件的服务,单独使用该服务,也可以作为文件服务器,用作保存文件;数据读取与验证请求,用户在完成文件上传后,可以调用该请求把文件数据读取出来并批量插入到数据库中,并执行验证存储过程以进行数据验证;目标数据传输服务,用于在执行完成数据插入后,读取数据并对数据进行结构化整理,并将数据返回给用户。

2.业务处理层,文件读取组件和消息队列组件分别在前面进行了介绍,在此不再赘述;数据验证组件,用作对数据的验证,数据验证的方法由存储过程实现,而存储过程与数据类别验证的映射关系会保存在数据表中,该组件的最大作用就是处理存储过程与数据类别验证的映射关系,并执行存续过程进行数据验证;数据库操作组件,是对数据库访问、操作的类,该服务中所有对数据库的操作最终都会应用该组件进行实现,包括执行数据验证的存储过程。

如图2所示为本发明的使用方法步骤:

步骤一请求文件保存服务,对文件进行上传,完成上传后,把文件记录保存到数据库中。

步骤二是请求数据读取与数据验证:

1.收到请求后,服务首先根据当前请求的用户数判断是否超过配置的最大数量,如果大于则把请求插入到消息队列中,等待前面请求的用户完成后,才能处理请求;

2.数据读取与插入数据库,调用文件读取组件,读取文件的数据,并根据读取出来的数据结构在数据库中生成对应的临时表,将数据批量插入到临时表中,并释放读取文件的资源;

3.根据请求中的数据类型,根据映射关系找到该数据类型的数据验证存储过程,并调用存储过程,将不符合规范的数据抽取到数据错误的验证表,并在临时表中删除这些数据。

步骤三最终数据的返回,读取验证之后的数据(可以分批读取,每批次读取N条数据,数据数可配置),如果需要可把数据转换成用户指定的数据结构,并返回最终的数据给用户。用户可以直接拿到数据做批量插入,从而完成文件数据导入。

步骤四完成数据导入后,删除导入服务的临时数据、临时表结构、临时配置数据。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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