数据库表导入方法、装置、设备及介质与流程

文档序号:23753062发布日期:2021-01-29 12:59阅读:60来源:国知局
数据库表导入方法、装置、设备及介质与流程

[0001]
本发明涉及大数据的数据处理技术领域,尤其涉及一种数据库表导入方法、装置、设备及介质。


背景技术:

[0002]
目前,电子表格的导入往往是与需求方或者用户约定好的固定表头,系统按照该固定表头开发,用户从系统导出模板,然后在本地按照该模板填写或编辑数据(表头不能变动),导入时系统通过识别每个列头逐行读取对应每一列的数据,最终第一待导入数据库表中,但是,在实际使用场景里,用户经常会反馈一些特殊的场景,比如,表格样式无法统一,表头与约定好的固定表头存在差异(哪怕表头只是新增一列)等场景,例如:在项目的薪酬分发中,由于一个项目包括很多子项目,并且一个项目中的各成员在子项目中的角色不同,所以薪酬分发也不一样,而且在项目中子项目会存在新增和删除的情况,以及成员会存在加入和离开的情况,也会存在加入或去除一类角色的情况,导致每天或每月的薪酬电子表格导入的过程中都无法固定表头的情况。此时,由于系统无法兼容不同表头的导入,因此无法满足这些特殊的场景要求,进而导致需要针对特殊场景一一单独开发电子表格对应的表头,增加了开发的工总量,且由于固定表头的无法更改,会导致电子表格生成之后的可维护性差。


技术实现要素:

[0003]
本发明提供一种数据库表导入方法、装置、计算机设备及存储介质,实现了无需固定表头的电子表格的导入,并且采用列式存储方式进行存储,增加了数据导入的灵活性,节省了因表头不统一的二次开发的工作量,大大减少了成本,并提高了数据导入效率。
[0004]
一种数据库表导入方法,包括:接收到第一导入请求,获取所述第一导入请求中的待导入文档和总项目信息;所述待导入文档包括待导入表;所述总项目信息包括总项目名和导入表名;通过apache poi技术,获取所述待导入表中的第一数据行单元格数组和第一数据列单元格数组,同时在数据库中创建与所述导入表名对应的数据库表;所述第一数据行单元格数组包括至少一个第一数据行单元格,所述第一数据列单元格数组包括至少一个第一数据列单元格;自所述数据库中查询与所述总项目名匹配的项目基础表,从所述项目基础表中获取与各所述第一数据行单元格的内容匹配的成员清单;所述成员清单包括成员标识码和与所述成员标识码关联的基础信息;通过单元格数据类型模型识别出与各所述第一数据列单元格的内容匹配的第一类型,获取与各所述第一类型匹配的数据规则,以及在所述待导入表中获取第一属性单元格;所述第一属性单元格是指与一个所述第一数据行单元格以及一个所述第一数据列单元格均对应的单元格;
通过apache poi技术,对各所述第一属性单元格执行导入前数据处理操作,得到与各所述第一属性单元格对应的第一待导入数据;所述导入前数据处理操作是指根据与所述第一属性单元格对应的所述第一类型,对所述第一属性单元格进行校验得到待处理数据,再根据与所述第一属性单元格对应的所述待处理数据、所述数据规则和所述成员清单,得到所述第一待导入数据;按列式存储方式,将各所述成员标识码、各所述第一数据列单元格和各所述第一待导入数据对应导入所述数据库表中,完成所述第一导入请求。
[0005]
一种数据库表导入装置,包括:接收模块,用于接收到第一导入请求,获取所述第一导入请求中的待导入文档和总项目信息;所述待导入文档包括待导入表;所述总项目信息包括总项目名和导入表名;获取模块,用于通过apache poi技术,获取所述待导入表中的第一数据行单元格数组和第一数据列单元格数组,同时在数据库中创建与所述导入表名对应的数据库表;所述第一数据行单元格数组包括至少一个第一数据行单元格,所述第一数据列单元格数组包括至少一个第一数据列单元格;查询模块,用于自所述数据库中查询与所述总项目名匹配的项目基础表,从所述项目基础表中获取与各所述第一数据行单元格的内容匹配的成员清单;所述成员清单包括成员标识码和与所述成员标识码关联的基础信息;识别模块,用于通过单元格数据类型模型识别出与各所述第一数据列单元格的内容匹配的第一类型,获取与各所述第一类型匹配的数据规则,以及在所述待导入表中获取第一属性单元格;所述第一属性单元格是指与一个所述第一数据行单元格以及一个所述第一数据列单元格均对应的单元格;执行模块,用于通过apache poi技术,对各所述第一属性单元格执行导入前数据处理操作,得到与各所述第一属性单元格对应的第一待导入数据;所述导入前数据处理操作是指根据与所述第一属性单元格对应的所述第一类型,对所述第一属性单元格进行校验得到待处理数据,再根据与所述第一属性单元格对应的所述待处理数据、所述数据规则和所述成员清单,得到所述第一待导入数据;导入模块,用于按列式存储方式,将各所述成员标识码、各所述第一数据列单元格和各所述第一待导入数据对应导入所述数据库表中,完成所述第一导入请求。
[0006]
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据库表导入方法的步骤。
[0007]
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据库表导入方法的步骤。
[0008]
本发明提供的数据库表导入方法、装置、计算机设备及存储介质,通过获取所述第一导入请求中的待导入文档和总项目信息;所述待导入文档包括待导入表;所述总项目信息包括总项目名和导入表名;通过apache poi技术,获取所述待导入表中的第一数据行单元格数组和第一数据列单元格数组,同时在数据库中创建与所述导入表名对应的数据库表;自所述数据库中查询与所述总项目名匹配的项目基础表,从所述项目基础表中获取与各所述第一数据行单元格的内容匹配的成员清单;通过单元格数据类型模型识别出与各所
述第一数据列单元格的内容匹配的第一类型,获取与各所述第一类型匹配的数据规则,以及在所述待导入表中获取第一属性单元格;通过apache poi技术,对各所述第一属性单元格执行导入前数据处理操作,得到与各所述第一属性单元格对应的第一待导入数据;所述导入前数据处理操作是指根据与所述第一属性单元格对应的所述第一类型,对所述第一属性单元格进行校验得到待处理数据,再根据与所述第一属性单元格对应的所述待处理数据、所述数据规则和所述成员清单,得到所述第一待导入数据;按列式存储方式,将各所述成员标识码、各所述第一数据列单元格和各所述第一待导入数据对应导入所述数据库表中,如此,实现了无需固定表头的电子表格的导入,打破了表头的位置及其内容的限定,可以随着项目或者成员(角色)的增加/删减而自由设计表格,达到不受表头限制导入数据库表的效果,,而且采用列式存储方式进行存储,为后续对同一数据库表的修改提供了不受表头限制的基础,增加了数据导入的灵活性,节省了因表头不统一的二次开发的工作量,大大减少了成本,并提高了数据导入效率。
附图说明
[0009]
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0010]
图1是本发明一实施例中数据库表导入方法的应用环境示意图;图2是本发明一实施例中数据库表导入方法的流程图;图3是本发明一实施例中数据库表导入方法的步骤s20的流程图;图4是本发明一实施例中数据库表导入方法的步骤s40的流程图;图5是本发明一实施例中数据库表导入方法的步骤s50的流程图;图6是本发明另一实施例中数据库表导入方法的步骤s50的流程图;图7是本发明一实施例中数据库表导入装置的原理框图;图8是本发明一实施例中计算机设备的示意图。
具体实施方式
[0011]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0012]
本发明提供的数据库表导入方法,可应用在如图1的应用环境中,其中,客户端(计算机设备)通过网络与服务器进行通信。其中,客户端(计算机设备)包括但不限于为各种个人计算机、笔记本电脑、智能手机、平板电脑、摄像头和便携式可穿戴设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
[0013]
在一实施例中,如图2所示,提供一种数据库表导入方法,其技术方案主要包括以下步骤s10-s60:s10,接收到第一导入请求,获取所述第一导入请求中的待导入文档和总项目信息;所
述待导入文档包括待导入表;所述总项目信息包括总项目名和导入表名。
[0014]
可理解地,所述第一导入请求为需要导入所述待导入文档时触发的请求,所述总项目信息为与所述待导入文档相关的信息,所述总项目信息可以通过在应用程序软件的导入界面上输入完成之后获取,所述总项目信息包括所述总项目名和所述导入表名,所述总项目名为赋予总项目的唯一标识名称,所述导入表名为赋予导入的数据库表的名称,所述待导入文档为需要导入数据库的文档,所述待导入文档的文件类型不作限定,可以为word格式的文档,也可以为excel格式的文档,所述待导入文档包括所述待导入表,所述待导入表是需要导入的表,比如待导入表为word格式的待导入文档里面的表格,或者待导入表为excel格式的待导入文档里面的工作簿的表格等等。
[0015]
s20,通过apache poi技术,获取所述待导入表中的第一数据行单元格数组和第一数据列单元格数组,同时在数据库中创建与所述导入表名对应的数据库表;所述第一数据行单元格数组包括至少一个第一数据行单元格,所述第一数据列单元格数组包括至少一个第一数据列单元格。
[0016]
可理解地,所述apache poi技术是一款用java编写的跨平台的java api(java,application programming interface,java应用程序接口)的技术,其主要用于对办公软件的文档的读写,通过所述apache poi技术,识别出所述待导入文档的文件类型信息,所述文件类型信息包含有文件格式和文件版本,所述文件格式为所述待导入文档的办公软件的文件类型,比如:excel文件类型、word文件类型、powerpoint文件类型等等,所述文件版本为文件格式下的版本,比如:95版本、07版本等等;从配置组件管理中心中查询到与所述文件类型信息匹配的apache poi配置组件,所述配置组件管理中心为管理所有apache poi配置组件的管理中心,所述配置组件管理中心包含了所有apache poi配置组件,所述apache poi配置组件为针对不同的办公软件的文件类型进行配置的环境组件,需要对一种办公软件的文件进行操作时,就运行与该文件相对应的apache poi配置组件,从而获取所述待导入表中的所述第一数据行单元格数组和所述第一数据列单元格数组,所述第一数据行单元格数组为所述待导入表中的第一行的预设列对应的单元格开始至该行中的下一个单元格为空的单元格之间的单元格集合,所述第一数据列单元格数组为所述待导入表中的第一列的预设行对应的单元格开始至该列中的下一个单元格为空的单元格之间的单元格集合。
[0017]
其中,在数据库中创建与所述导入表名对应的数据库表,所述数据库为列式数据库,比如hbase、vertica、greenplum 等分布式数据库均可采用列式存储方式的列式数据库,所述数据库表为所述数据库中创建的列式存储的数据表。
[0018]
在一实施例中,如图3所示,所述步骤s20中,即所述通过apache poi技术,获取所述待导入表中的第一数据行单元格数组和第一数据列单元格数组,包括:s201,识别出所述待导入文档的文件类型信息。
[0019]
可理解地,所述文件类型信息包括文件格式和文件版本,所述文件格式为所述待导入文档的办公软件的文件类型,比如:excel文件类型、word文件类型、powerpoint文件类型等等,所述文件版本为文件格式下的版本,比如:95版本、07版本等等。
[0020]
s202,自配置组件管理中心获取与所述文件类型信息匹配的apache poi配置组件,并运行所述apache poi配置组件。
[0021]
可理解地,先识别出所述待导入文档的文件格式,再识别出所述待导入文档的文
件版本,查询到均与所述文件格式和所述文件版本匹配的所述apache poi配置组件,所述配置组件管理中心包含了所有apache poi配置组件,所述apache poi配置组件为针对不同的办公软件的文件类型进行配置的环境组件,需要对一种办公软件的文件进行操作时,就运行与该文件相对应的apache poi配置组件。
[0022]
s203,获取所述待导入表中的所述第一数据行单元格数组和所述第一数据列单元格数组。
[0023]
可理解地,通过所述apache poi技术,获取含有至少一个的所述第一数据行单元格的所述第一数据行单元格数组,同时获取含有至少一个的所述第二数据列单元格的所述第一数据列单元格数据。
[0024]
本发明实现了通过识别出所述待导入文档的文件类型信息;自配置组件管理中心获取与所述文件类型信息匹配的apache poi配置组件,并运行所述apache poi配置组件;获取所述待导入表中的所述第一数据行单元格数组和所述第一数据列单元格数组,如此,通过apache poi技术,能够对不同文件类型的待导入文档进行识别,并获取待导入表中的数据,提高了数据导入的多样性和便捷性,提升了用户的满意度。
[0025]
s30,自所述数据库中查询与所述总项目名匹配的项目基础表,从所述项目基础表中获取与各所述第一数据行单元格的内容匹配的成员清单;所述成员清单包括成员标识码和与所述成员标识码关联的基础信息。
[0026]
可理解地,所述数据库中包含有所有与总项目一一对应的所述项目基础表,所述项目基础表为一个总项目里面的所有基础信息的表,比如项目基础表包含成员、性别、角色、项目比例等等,从所述数据库中查询与所述总项目名匹配的所述项目基础表,所述第一数据行单元格的内容可以根据需求设定,比如所述第一数据行单元格的内容为项目经理组、质检组等等,获取与各所述第一数据行单元格的内容匹配的所述成员清单,所述成员清单包含与该第一数据行单元格的内容匹配的所述成员标识码和所述基础信息,所述成员标识码为对各成员赋予的唯一标识码,所述基础信息为与所述成员相关的基础类的信息,其中,匹配的过程可以为精确匹配,也可以为模糊匹配,例如第一数据行单元格的内容为“项目经理组”,获取角色为“项目经理”的成员清单。
[0027]
s40,通过单元格数据类型模型识别出与各所述第一数据列单元格的内容匹配的第一类型,获取与各所述第一类型匹配的数据规则,以及在所述待导入表中获取第一属性单元格;所述第一属性单元格是指与一个所述第一数据行单元格以及一个所述第一数据列单元格均对应的单元格。
[0028]
可理解地,所述单元格数据类型模型识别出与各所述第一数据列单元格对应的所述第一类型,所述单元格数据类型模型为训练完成的神经网络模型,所述单元格数据类型模型能够实现自动识别出与所述第一数据列单元格匹配的所述第一类型,所述第一类型为根据第一数据列单元格的内容进行识别的数据类型,所述第一类型包括数值类型、字符类型、小数点类型等等,所述数据规则为根据所述第一类型而定义的规则,一个所述第一类型与一个所述数据规则关联,例如:第一数据列单元格中的内容为“xx项目的收益总额”,识别出“xx项目”、“收益”和“总额”的特征,确定第一类型为小数点类型,与该第一类型对应的数据规则为根据每个成员在xx项目中的比例划分,识别出与一个所述第一数据列单元格的内容匹配的第一类型,说明与该第一数据列单元格相同行的所述第一属性单元格的数据类型
为该第一类型,如此,无需固定表头或者第一列的固定内容,通过单元格数据类型模型自动识别出与第一数据列单元格匹配的第一类型,打破了传统的表头固定的局限。
[0029]
其中,所述第一属性单元格为与一个所述第一数据行单元格相同的列和一个所述第一数据列单元格相同的行对应的单元格。
[0030]
在一实施例中,如图4所示,所述步骤s40中,即所述通过单元格数据类型模型识别出与各所述第一数据列单元格的内容匹配的第一类型,包括:s401,将所述第一数据列单元格的内容输入所述单元格数据类型模型中;所述单元格数据类型模型为基于word2vec模型的神经网络模型。
[0031]
可理解地,所述单元格数据类型模型为训练完成的且基于word2vec模型的神经网络模型,即所述单元格数据类型模型的网络结构为在所述word2vec模型的网络结构的基础上进行训练,所述单元格数据类型模型能够实现通过提取数据类型特征自动识别出与所述第一数据列单元格匹配的所述第一类型的模型。
[0032]
s402,通过所述单元格数据类型模型提取数据类型特征。
[0033]
可理解地,所述数据类型特征为将文本转换成词向量后体现的与项目事项类型相关的特征,所述提取数据类型特征的过程为所述单元格数据类型模型将所述第一数据行单元格的内容进行拆分词语,将所述第一数据行单元格的内容拆分成若干个单元词语,将所述单元词语进行词向量转换,得到含有多个词向量的数据,再通过加权处理得到权重矩阵,对该权重矩阵进行所述数据类型特征的提取。
[0034]
s403,根据所述数据类型特征,识别出与所述第一数据列单元格对应的所述第一类型。
[0035]
可理解地,根据提取的所述数据类型特征,预测出各所述数据类型的概率值,获取所有概率值中最高的概率值对应的所述数据类型,并将其确定为与所述第一数据列单元格对应的所述第一类型。
[0036]
本发明实现了通过将所述第一数据列单元格的内容输入所述单元格数据类型模型中,通过所述单元格数据类型模型提取数据类型特征;根据所述数据类型特征,识别出与所述第一数据列单元格对应的所述第一类型,如此,实现了通过基于word2vec模型的单元格数据类型模型自动识别出与所述第一数据列单元格对应的所述第一类型,无需固定单元格的内容,通过自然语言识别技术,预测出第一数据列单元格的内容要求,并且自动识别出与其对应的第一类型,打破了表头内容的限定,提高了数据导入的灵活性,并提高了识别准确率。
[0037]
s50,通过apache poi技术,对各所述第一属性单元格执行导入前数据处理操作,得到与各所述第一属性单元格对应的第一待导入数据;所述导入前数据处理操作是指根据与所述第一属性单元格对应的所述第一类型,对所述第一属性单元格进行校验得到待处理数据,再根据与所述第一属性单元格对应的所述待处理数据、所述数据规则和所述成员清单,得到所述第一待导入数据。
[0038]
可理解地,通过所述apache poi技术,对各所述第一属性单元格执行导入前数据处理操作,得到与其对应的第一待导入数据,所述导入前数据处理操作是指根据与所述第一属性单元格对应的所述第一类型,即根据与所述第一属性单元格对应的所述第一数据列单元格对应的所述第一类型,对所述第一属性单元格进行校验,所述校验的处理过程为将
所述第一属性单元格中的内容转换成符合该第一类型的数据,将校验后的数据确定为所述待处理数据,然后根据所述第一类型,可以确定出与所述第一属性单元格对应的所述数据规则,所述数据规则包括处理字段和处理公式,与所述第一属性单元格对应的所述成员清单为与所述第一属性单元格对应的所述第一数据行单元格的内容匹配的所述成员清单,根据与所述第一属性单元格对应的所述待处理数据、所述数据规则和所述成员清单,即自所述项目基础表中获取与所述成员标识码和所述处理字段均匹配的单元格信息,所述基础信息包括多个单元格信息将与所述成员标识码对应的所述单元格信息和所述待处理输入所述处理公式,得到所述第一待导入数据。
[0039]
在一实施例中,如图5所示,所述步骤s50中,即所述根据与所述第一属性单元格对应的所述第一类型,对所述第一属性单元格进行校验得到待处理数据,包括:s501,检测所述第一属性单元格中的内容是否符合与所述第一属性单元格对应的所述第一类型的条件。
[0040]
可理解地,获取所述第一属性单元格中的内容,对获取的所述第一属性单元格中的内容进行判断,判断其是否符合与所述第一属性单元格对应的所述第一类型的条件。
[0041]
s502,若检测到所述第一属性单元格中的内容不符合所述第一类型的条件,则通过所述apache poi技术中的正则表达式技术,对所述第一属性单元格中的内容进行转换,得到符合所述第一类型的条件的所述待处理数据。
[0042]
可理解地,在检测到所述第一属性单元格不符合所述第一类型的条件时,通过apache poi技术中的正则表达式技术,将该所述第一属性单元格中的内容进行正则化,即将其转换成符合所述第一类型的条件的数据类型,从而得到所述待处理数据,例如:第一属性单元格的内容为文本输入的“1364”的文本类型,而其对应的第一类型为数值类型,就将文本类型的“1364”进行文本转数字处理,转换成数字输入“1364”的数值类型,将数值类型的“1364”确定为该第一属性单元格的待处理数据。
[0043]
s503,若检测到所述第一属性单元格中的内容符合所述第一类型的条件,则将所述第一属性单元格中的内容确定为所述待处理数据。
[0044]
可理解地,在检测到所述第一属性单元格符合所述第一类型的条件时,对所述第一属性单元格中的内容无需处理,直接将其去顶为所述待处理数据。
[0045]
本发明实现了通过apache poi技术中的正则表达式技术,对各第一属性单元格进行校验,得到符合与其对应的第一类型的条件的待处理数据,如此,能够自动校验待导入表中的数据,以符合数据类型的要求,避免用户输入不同的类型而重新输入的二次修改操作,节省了修改时间,并降低了数据输入的门槛,提高了数据导入的灵活性,提升了用户的客户满意度。
[0046]
在一实施例中,如图6所示,所述步骤s50中,即所述根据与所述第一属性单元格对应的所述待处理数据、所述数据规则和所述成员清单,得到所述第一待导入数据,包括:s504,获取与所述第一属性单元格对应的所述第一类型匹配的数据规则;所述数据规则包括处理字段和处理公式。
[0047]
可理解地,获取包括处理字段和处理公式的所述数据规则,所述处理字段为涉及该数据规则的基础信息相对应字段,所述处理公式为涉及所述待处理数据与所述处理字段进行处理的公式,例如:第一类型为“小数点类型”,其对应的数据规则的处理字段为“项目
占比”,其对应的数据规则的处理字段的处理公式为“c=a
×
b,其中,c为第一待导入数据,a为待处理数据,b为处理字段”。
[0048]
s505,自所有所述基础信息中获取与所述成员标识码和所述处理字段匹配的单元格信息。
[0049]
可理解地,从所有所述基础信息中查询到与所述成员清单中的所述成员标识码和所述待处理字段相匹配的所述单元格信息,例如:第一属性单元格的待处理数据为10000.00,与第一属性单元格对应的第一数据列单元中的内容为“xx项目的收益总额”,与其对应的第一类型为“小数点类型”,则该数据规则的处理字段为“项目占比”,即获取“项目占比”字段对应的单元格信息。
[0050]
s506,将与所述成员标识码对应的所述单元格信息和所述待处理数据输入所述处理公式,得到所述第一待导入数据。
[0051]
可理解地,将获取的与所述成员标识码一一对应的所述单元格信息和所述待处理数据输入与其对应的所述处理公式,经过所述处理公式的处理得到所述第一待导入数据,例如:第一属性单元格的待处理数据为10000.00,一个成员标识码为0001,其对应的“项目占比”的单元格信息为10%,其对应的处理公式为“c=a
×
b,其中,c为第一待导入数据,a为待处理数据,b为处理字段”,则与该成员标识码(0001)对应的第一待导入数据为1000.00。
[0052]
本发明实现了获取与所述第一属性单元格对应的所述第一类型匹配的数据规则;所述数据规则包括处理字段和处理公式;自所有所述基础信息中获取与所述成员标识码和所述处理字段匹配的单元格信息;将与所述成员标识码对应的所述单元格信息和所述待处理数据输入所述处理公式,得到所述第一待导入数据,如此,实现了自动获取与第一属性单元格对应的数据规则(处理字段和处理公式),并获取与处理字段匹配的单元格信息,经过处理公式得出与第一属性单元格对应的第一待导入数据。
[0053]
s60,按列式存储方式,将各所述成员标识码、各所述第一数据列单元格和各所述第一待导入数据对应导入所述数据库表中,完成所述第一导入请求。
[0054]
可理解地,所述列式存储(column-based)方式,是相对于行式存储来说的,在基于列式存储的数据库中,数据是按照列为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在,将各所述成员标识码、各所述第一数据列单元格和各所述第一待导入数据建立关联关系,并导入所述数据库表中,如此,每一列单独存放,数据即是索引,无需考虑待导入表的表头的顺序,因此,实现了采用列式存储方式进行存储,增加了数据导入的灵活性,不受限于规定的表格列数。
[0055]
本发明实现了通过获取所述第一导入请求中的待导入文档和总项目信息;所述待导入文档包括待导入表;所述总项目信息包括总项目名和导入表名;通过apache poi技术,获取所述待导入表中的第一数据行单元格数组和第一数据列单元格数组,同时在数据库中创建与所述导入表名对应的数据库表;自所述数据库中查询与所述总项目名匹配的项目基础表,从所述项目基础表中获取与各所述第一数据行单元格的内容匹配的成员清单;通过单元格数据类型模型识别出与各所述第一数据列单元格的内容匹配的第一类型,获取与各所述第一类型匹配的数据规则,以及在所述待导入表中获取第一属性单元格;通过apache poi技术,对各所述第一属性单元格执行导入前数据处理操作,得到与各所述第一属性单元格对应的第一待导入数据;所述导入前数据处理操作是指根据与所述第一属性单元格对应
的所述第一类型,对所述第一属性单元格进行校验得到待处理数据,再根据与所述第一属性单元格对应的所述待处理数据、所述数据规则和所述成员清单,得到所述第一待导入数据;按列式存储方式,将各所述成员标识码、各所述第一数据列单元格和各所述第一待导入数据对应导入所述数据库表中,如此,实现了无需固定表头的电子表格的导入,打破了表头的位置及其内容的限定,可以随着项目或者成员(角色)的增加/删减而自由设计表格,达到不受表头限制导入数据库表的效果,,而且采用列式存储方式进行存储,为后续对同一数据库表的修改提供了不受表头限制的基础,增加了数据导入的灵活性,节省了因表头不统一的二次开发的工作量,大大减少了成本,并提高了数据导入效率。
[0056]
在一实施例中,所述步骤s60之后,即所述完成所述第一导入请求之后,包括:s601,接收到第二导入请求,获取所述第二导入请求中的增加导入文档和所述总项目信息;所述增加导入文档包括增加导入表。
[0057]
可理解地,在完成了所述第一导入请求之后,在需要对所述数据库表进行增加的情况下,触发所述第二导入请求,所述导入请求中包含有所述增加导入文档和所述总项目信息,所述增加导入文档为需要导入至所述数据库表的文档,其中,所述增加导入文档包括所述增加导入表,所述增加导入表为需要导入至所述数据库表的数据表格。
[0058]
s602,通过apache poi技术,获取所述增加导入表中的第二行单元格数组和第二数据列单元格数组,同时自所述数据库中查询到与所述导入表名对应的数据库表;所述第二行单元格数组包括至少一个第二行单元格,所述第二数据列单元格数组包括至少一个第二数据列单元格。
[0059]
可理解地,所述apache poi技术是一款用java编写的跨平台的java api(java,application programming interface,java应用程序接口)的技术,其主要用于对办公软件的文档的读写,通过所述apache poi技术,识别出所述待导入文档的文件类型信息,所述文件类型信息包含有文件格式和文件版本,所述文件格式为所述待导入文档的办公软件的文件类型,比如:excel文件类型、word文件类型、powerpoint文件类型等等,所述文件版本为文件格式下的版本,比如:95版本、07版本等等;从配置组件管理中心中查询到与所述文件类型信息匹配的apache poi配置组件,所述配置组件管理中心为管理所有apache poi配置组件的管理中心,所述配置组件管理中心包含了所有apache poi配置组件,所述apache poi配置组件为针对不同的办公软件的文件类型进行配置的环境组件,需要对一种办公软件的文件进行操作时,就运行与该文件相对应的apache poi配置组件,从而获取所述增加导入表中的所述第二行单元格数组和所述第二数据列单元格数组,所述第二行单元格数组为所述增加导入表中的第一行的预设列对应的单元格开始至该行中的下一个单元格为空的单元格之间的单元格集合,所述第二数据列单元格数组为所述增加导入表中的第一列的预设行对应的单元格开始至该列中的下一个单元格为空的单元格之间的单元格集合。
[0060]
其中,在所述数据库中查询到与所述导入表名对应的创建之后的所述数据库表。
[0061]
s603,自数据库中查询与所述总项目名匹配的项目基础表,从所述项目基础表中获取与各所述第二行单元格的内容匹配的成员清单。
[0062]
可理解地,所述数据库中包含有所有与总项目一一对应的所述项目基础表,所述项目基础表为一个总项目里面的所有基础信息的表,比如项目基础表包含成员、性别、角色、项目比例等等,从所述数据库中查询与所述总项目名匹配的所述项目基础表,所述第二
行单元格的内容可以根据需求设定,比如所述第二行单元格的内容为项目经理组、质检组等等,获取与各所述第二行单元格的内容匹配的所述成员清单,所述成员清单包含与该第二行单元格的内容匹配的所述成员标识码和所述基础信息,所述成员标识码为对各成员赋予的唯一标识码,所述基础信息为与所述成员相关的基础类的信息,其中,匹配的过程可以为精确匹配,也可以为模糊匹配,例如第二行单元格的内容为“质检组”,获取角色为“质检人”的成员清单。
[0063]
s604,通过所述单元格数据类型模型识别出与各所述第二数据列单元格的内容匹配的第二类型,获取与各所述第二类型匹配的数据规则,以及在所述增加导入表中获取第二属性单元格;所述第二属性单元格是指与一个所述第二行单元格和一个所述第二数据列单元格均对应的单元格。
[0064]
可理解地,所述单元格数据类型模型识别出与各所述第二数据列单元格对应的所述第二类型,所述单元格数据类型模型为训练完成的神经网络模型,所述单元格数据类型模型能够实现自动识别出与所述第二数据列单元格匹配的所述第二类型,所述第二类型为根据第二数据列单元格的内容进行识别的数据类型,所述第二类型包括数值类型、字符类型、小数点类型等等,所述数据规则为根据所述第二类型而定义的规则,一个所述第二类型与一个所述数据规则关联,例如:第二数据列单元格中的内容为“xx项目的进度职责”,识别出“xx项目”、“进度”和“职责”的特征,确定第二类型为字符类型,与该第二类型对应的数据规则为在每个成员针对在xx项目中的职责后增加与进度对应的职责内容,识别出与一个所述第二数据列单元格的内容匹配的第二类型,说明与该第二数据列单元格相同行的所述第二属性单元格的数据类型为该第二类型。
[0065]
其中,所述第二属性单元格为与一个所述第二行表头单元格相同的列和一个所述第二数据列单元格相同的行对应的单元格,所述第二类型可以与第一类型相同,也可以不与所述第一类型相同。
[0066]
s605,通过apache poi技术,对各所述第二属性单元格执行新导入前数据处理操作,得到与各所述第二属性单元格对应的第二待导入数据;所述新导入前数据处理操作是指根据与所述第二属性单元格对应的所述第二类型,对所述第二属性单元格进行校验得到增加处理数据,再根据与所述第二属性单元格对应的所述增加处理数据、所述数据规则和所述成员清单,得到所述第二待导入数据。
[0067]
可理解地,通过所述apache poi技术,对各所述第二属性单元格执行导入前数据处理操作,得到与其对应的第二待导入数据,所述导入前数据处理操作是指根据与所述第二属性单元格对应的所述第二类型,即根据与所述第二属性单元格对应的所述第二数据列单元格对应的所述第二类型,对所述第二属性单元格进行校验,所述校验的处理过程为将所述第二属性单元格中的内容转换成符合该第二类型的数据,将校验后的数据确定为所述待处理数据,然后根据所述第二类型,可以确定出与所述第二属性单元格对应的所述数据规则,所述数据规则包括处理字段和处理公式,与所述第二属性单元格对应的所述成员清单为与所述第二属性单元格对应的所述第二数据行单元格的内容匹配的所述成员清单,根据与所述第二属性单元格对应的所述待处理数据、所述数据规则和所述成员清单,即自所述项目基础表中获取与所述成员标识码和所述处理字段均匹配的单元格信息,所述基础信息包括多个单元格信息将与所述成员标识码对应的所述单元格信息和所述待处理输入所
述处理公式,得到所述第二待导入数据。
[0068]
s606,按列式存储方式,在所述数据库表中的第一列的第一个空字段增加各所述第二数据列单元格,并根据与各所述第二行单元格的内容匹配的成员清单、所有所述第二待导入数据对应插入所述数据库表中。
[0069]
可理解地,通过所述列式存储方式,在原来的所述数据库表中的第一列的第一空字段,即在第一列的非空字段的末尾处,增加各所述第二数据列单元格,并将与各所述第二行单元格的内容匹配的成员清单、所有所述第二待导入数据相应地插入至原所述数据库表中,完成了所述第二导入请求,实现了在原数据库表中增加数据的操作。
[0070]
本发明实现了通过获取所述第二导入请求中的增加导入文档和所述总项目信息;通过apache poi技术,获取所述增加导入表中的第二行单元格数组和第二数据列单元格数组,同时自所述数据库中查询到与所述导入表名对应的数据库表;自数据库中查询与所述总项目名匹配的项目基础表,从所述项目基础表中获取与各所述第二行单元格的内容匹配的成员清单;通过所述单元格数据类型模型识别出与各所述第二数据列单元格的内容匹配的第二类型,获取与各所述第二类型匹配的数据规则,以及在所述增加导入表中获取第二属性单元格;通过apache poi技术,对各所述第二属性单元格执行新导入前数据处理操作,得到与各所述第二属性单元格对应的第二待导入数据;按列式存储方式,在所述数据库表中的第一列的第一个空字段增加各所述第二数据列单元格,并根据与各所述第二行单元格的内容匹配的成员清单、所有所述第二待导入数据对应插入所述数据库表中,如此,实现了在后续的增加数据的情况下不受历史表头的限制,能够做到无表头限制的数据库表导入,提高了数据导入灵活性和高效,节省了因表头不统一的二次开发的工作量,大大减少了成本,并提高了数据导入效率。
[0071]
在一实施例中,所述步骤s60之后,即所述完成所述第一导入请求之后,还包括:s70,接收到导出请求,获取所述导出请求中的用户导出清单和所述导入表名。
[0072]
可理解地,在用户需要查看导入所述数据库表中的数据时,触发所述导出请求,所述导出请求中包含有所述用户导出清单,所述用户导出清单包含了需要导出所述数据库表中的成员的清单。
[0073]
s80,自与所述导入表名对应的所述数据库表中,获取与所述用户导出清单匹配的成员标识码,将获取的所述成员标识码确定为导出标识码。
[0074]
可理解地,从与所述导入表名对应的所述数据库表中,查找到与所述用户导出清单中的成员标识码完全匹配的成员标识码,将查找到的所述成员标识码标记为所述导出标识码,所述导出标识码为需要导出数据的成员标识码。
[0075]
s90,自所述数据库表中筛选出与所述导出标识码关联的数据,并通过行列转换得到行式导出表,以及通过apache poi技术导出excel格式的导出文档。
[0076]
可理解地,从所述数据库表中筛选出与所述导出标识码关联的数据,将列式存储的数据转换成行式的表格,得到所述行式导出表,通过所述apache poi技术,创建一个空白的excel格式的文档,再将所述行式导出表写入该空白的文档,得到所述导出文档,并展示给用户。
[0077]
本发明实现了通过获取所述导出请求中的用户导出清单和所述导入表名;自所述数据库表中,获取与所述用户导出清单匹配的成员标识码,并确定为导出标识码;从所述数
据库表中筛选出与所述导出标识码关联的数据,并通过行列转换得到行式导出表,以及通过apache poi技术导出excel格式的导出文档,如此,实现了通过apache poi技术,将列式存储的数据库表转换成行式的excel格式的导出文档,便于用户查看数据库表中的数据,提升了用户的体验满意度,并提高了数据导出的便捷性。
[0078]
在一实施例中,提供一种数据库表导入装置,该数据库表导入装置与上述实施例中数据库表导入方法一一对应。如图7所示,该数据库表导入装置包括接收模块11、获取模块12、查询模块13、识别模块14、执行模块15和导入模块16。各功能模块详细说明如下:接收模块11,用于接收到第一导入请求,获取所述第一导入请求中的待导入文档和总项目信息;所述待导入文档包括待导入表;所述总项目信息包括总项目名和导入表名;获取模块12,用于通过apache poi技术,获取所述待导入表中的第一数据行单元格数组和第一数据列单元格数组,同时在数据库中创建与所述导入表名对应的数据库表;所述第一数据行单元格数组包括至少一个第一数据行单元格,所述第一数据列单元格数组包括至少一个第一数据列单元格;查询模块13,用于自所述数据库中查询与所述总项目名匹配的项目基础表,从所述项目基础表中获取与各所述第一数据行单元格的内容匹配的成员清单;所述成员清单包括成员标识码和与所述成员标识码关联的基础信息;识别模块14,用于通过单元格数据类型模型识别出与各所述第一数据列单元格的内容匹配的第一类型,获取与各所述第一类型匹配的数据规则,以及在所述待导入表中获取第一属性单元格;所述第一属性单元格是指与一个所述第一数据行单元格以及一个所述第一数据列单元格均对应的单元格;执行模块15,用于通过apache poi技术,对各所述第一属性单元格执行导入前数据处理操作,得到与各所述第一属性单元格对应的第一待导入数据;所述导入前数据处理操作是指根据与所述第一属性单元格对应的所述第一类型,对所述第一属性单元格进行校验得到待处理数据,再根据与所述第一属性单元格对应的所述待处理数据、所述数据规则和所述成员清单,得到所述第一待导入数据;导入模块16,用于按列式存储方式,将各所述成员标识码、各所述第一数据列单元格和各所述第一待导入数据对应导入所述数据库表中,完成所述第一导入请求。
[0079]
关于数据库表导入装置的具体限定可以参见上文中对于数据库表导入方法的限定,在此不再赘述。上述数据库表导入装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0080]
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据库表导入方法。
[0081]
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中数据库表导入方法。
[0082]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中数据库表导入方法。
[0083]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink) dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0084]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
[0085]
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1