掌桥专利:专业的专利平台
掌桥专利
首页

表数据导入表关系型数据库的方法、系统、装置及存储介质

文献发布时间:2023-06-19 16:04:54



技术领域

本发明涉及一种数据转移技术领域,尤其涉及一种表数据导入表关系型数据库的方法、系统、装置及存储介质。

背景技术

随着互联网技术的发展,储存数据的工具和/或软件日益增多。根据数据储存需求的不同,也诞生了不同的计算机储存工具。例如便于日常记录和储存数据的表格;再如便于长期和大量储存数据的数据库,均成了数据存储领域中不可或缺的工具。

表格在excel和word等软件中均可创建或绘制。数据库以类似于达梦数据库的表关系型数据库为主流,占据着数据库的大部分市场。而随着数据储存量的日益增大,想要将表格中的表数据储存到表关系型数据库中,因无法在表关系型数据库中实现自动导入,因此在现有技术中,只能靠技术人员手动导入,影响了表数据导入的效率。

发明内容

有鉴于此,本发明提供了一种表数据导入表关系型数据库的方法、系统、装置及存储介质,用于解决现有技术中的表数据导入效率低的问题。为达上述之一或部分或全部目的或是其他目的,本发明提出一种表数据导入表关系型数据库的方法、系统、装置及存储介质,第一方面:

一种表数据导入表关系型数据库的方法,包括:

在目标运行环境中,与表关系型数据库和表数据储存文档均建立连接;

基于与所述表数据储存文档建立的连接,获取所述表数据储存文档中的表项信息;

基于与所述表关系型数据库建立的连接和所述表项信息在所述表关系型数据库中创建数据表;

将所述表数据储存文档中的表内数据写入所述数据表。

优选地,所述基于与所述表关系型数据库建立的连接和所述表项信息在所述表关系型数据库中创建数据表的步骤包括:

获取所述数据表的表名;

创建与所述表关系型数据库相关联的建表游标;

启动所述建表游标,并确定基于所述表名和所述表项信息组合得到建表执行指令;

基于所述建表游标遍历所述建表执行指令,以在所述表关系型数据库中创建所述数据表。

优选地,所述将所述表数据储存文档中的表内数据写入所述数据表的步骤包括:

按照行数读取所述目标表格中位于所述列名所在行下方的所述表内数据;每次读取一行;

基于所述表名、所述列名和所述表内数据,生成至少一个数据信息;

创建与所述表关系型数据库相关联的插入游标;

启动所述插入游标,并确定基于所述数据信息得到的插入执行指令;

基于所述插入游标遍历所述插入执行指令,以将所述表内数据录入到所述数据表中。

优选地,所述获取所述表数据储存文档中的表项信息的步骤包括:

获取目标表格的位置信息;

基于所述位置信息锁定所述目标表格;

基于预设的检索条件,获取所述目标表格中各列的列名;所述检索条件包括固定式条件或计算式条件。

优选地,在所述检索条件为所述固定式条件时,所述基于预设的检索条件,查找所述目标表格中各列的列名的步骤包括:

获取预设的行数信息;

将所述目标表格中与所述行数信息对应的行判定为首行;

读取所述首行中各单元格的内容,将所述首行中各单元格的内容确定为所述列名;

在所述检索条件为计算式条件时,所述基于预设的检索条件,查找所述目标表格中各列的列名的步骤包括:

沿列方向遍历所述目标表格,得到所述目标表格每行的列数信息;

获取所述列数信息中的最大列数;

计算所述最大列数与预设的数量阈值之差,得到目标列数;

沿列方向查找所述目标表格中首个所述列数数量大于或等于所述目标列数的目标行;

读取所述目标行中各单元格的内容,将所述目标行中各单元格的内容确定为所述列名。

优选地,在所述获取所述数据表的表名之后,还包括:

判断所述表关系型数据库中是否存在与所述表名同名的所述数据表;

若否,则执行所述创建与所述表关系型数据库相关联的建表游标;

若是,则将所述列名输入到对应所述表名的所述数据表中。

优选地,所述在目标运行环境中,与表关系型数据库和表数据储存文档均建立连接的步骤包括:

获取表数据储存文档的文档信息;

调取文档接口,基于所述文档接口和所述文档信息与所述表数据储存文档建立连接;

获取表关系型数据库的数据库信息;

调取数据库接口,基于所述数据库接口和所述数据库信息与所述表关系型数据库建立连接。

第二方面:

一种表数据导入表关系型数据库的系统,应用于目标运行环境中,包括连接模块,用于与表关系型数据库和表数据储存文档均建立连接;

获取模块,用于基于与所述表数据储存文档建立的连接,获取所述表数据储存文档中的表项信息;

建表模块,用于基于与所述表关系型数据库建立的连接和所述表项信息在所述表关系型数据库中创建数据表;

和写入模块,用于将所述表数据储存文档中的表内数据写入所述数据表。

第三方面:

一种表数据导入表关系型数据库的装置,包括存储器和处理器,所述存储器中存储有表数据导入表关系型数据库的方法,所述处理器用于在执行所述表数据导入表关系型数据库的方法时采用上述任一种方法。

第四方面:

一种存储介质,存储有能够被处理器加载并执行上述任一种方法的计算机程序。

实施本发明实施例,将具有如下有益效果:

通过与表关系型数据库和表数据储存文档建立连接,使得可以从表数据储存文档中获得表项信息,再在表关系型数据库中创建与表项信息对应的数据表,最后将表数据储存文档中的表内数据写入到创建在表关系型数据库的数据表内,实现表数据从表数据储存文档到表关系型数据库的转移。由于整个执行过程均位于目标运行环境中,因此可以自动执行,达到了全自动转移表数据的目的,无需技术人员手动将表数据导入到表关系型数据库内,减少了人工需求、降低了人工工作量以及提高了表数据导入的效率。

附图说明

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

其中:

图1为一个实施例中表数据导入表关系型数据库的方法的整体流程图。

图2为一个实施例中与表数据储存文档和表关系型数据库建立连接的流程图。

图3为一个实施例中获取表项信息的流程图。

图4为一个实施例中检索条件为固定式条件时的流程图。

图5为一个实施例中检索条件为计算式条件时的流程图。

图6为一个实施例中在表关系型数据库内创建数据表的流程图。

图7为一个实施例中将表数据导入到表关系型数据库中的流程图。

图8为一个实施例中将表数据导入到表关系型数据库中的另一流程图。

图9为一个实施例中excel文档中表格的示意图。

图10为一个实施例中达梦数据库中数据表的示意图。

图11为一个实施例中表数据导入表关系型数据库的系统的整体框架图。

具体实施方式

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

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。

对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。

表关系型数据库:一种关系型数据库,其特点为具有表结构,即数据库下能够建立若干数据表,需要储存的数据可以储存在数据表的行和/或列中。常见的表关系型数据库包括mysql数据库、达梦数据库和Oracle数据库。

表数据储存文档,一种电子文档,能够创建、记录和存储表格,同时能够在表格中记录数据,记录的数据即表数据;并且能够对表数据进行储存。常见的表数据储存文档例如word、excel等。

Python:一种高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。具有可扩展性、可扩充性和可嵌入性等特点;其中,可扩展性例如需要一段关键代码运行得更快,或者希望某些算法不公开,则可以部分程序使用C或C++编写,而后在python程序中使用他们。Python本身是可扩充的,使所有的特性和功能无需均集成到语言核心;python具有较多的API和工具,以便于能够使用C语言、C++和Cython来编写扩充模块。可嵌入性即可以把python嵌入至C或C++程序中,向程序提供脚本功能。

Dmpython包:一个数据包,用于为python连接达梦数据库提供必要的连接包。本申请中所述的dmpython包即指能够在python环境下连接表关系型数据库的数据包。

Xlrd包:用于在python环境下连接excel表格的数据包。

本发明实施例提供一种表数据导入表关系型数据库的方法。本发明实施例提供的表数据导入表关系型数据库的方法可以通过计算机程序来实现,该计算机程序在执行的时候,完成本发明实施例提供的表数据导入表关系型数据库的方法中各个步骤。

参照图1,表数据导入表关系型数据库的方法包括:

S100、在目标运行环境中,与表关系型数据库和表数据储存文档均建立连接。

在一实施例中,目标运行环境为python环境,即在python服务器下,使用python语言;表关系型数据库为达梦数据库;表数据储存文档为excel文档。

在其他实施例中,目标运行环境也可以是其他语言环境,表关系型数据库可以是mysql数据库或Oracle数据库,表数据储存文档可以是word文档、PPT文档或者cad文档。旨在能够利用目标运行环境中的代码语言,与表关系型数据库和表数据储存文档建立连接即可。其中,所谓建立连接,指能够与表关系型数据库和表数据储存文档进行基础的操作控制以及数据交互,例如在表关系型数据库中建立数据表、在表关系型数据库中进行查找动作、在表关系型数据库中进行增删改动作、将数据写入表数据储存文档中、在表数据储存文档中进行增删改查动作等。

参照图2,在一应用场景中,步骤S100具体包括:

S110、获取表数据储存文档的文档信息。

文档信息包括文档储存位置、文档名称、文档连接端口中的至少一个,旨在通过文档信息可以确定出唯一的表数据储存文档即可。在一实施例中,文档信息的获取方式为自动获取;例如预先设置储存有若干文档信息的第一列表。在需要获取时,从第一列表中逐一调取文档信息。在另一实施例中,文档信息的获取方式为输出获取请求,相应连接的显示设备基于输出获取请求显示文档信息输入框;而后显示设备将文档信息输入框中的内容反馈,以得到文档信息。

S120、调取文档接口,基于文档接口和文档信息与表数据储存文档建立连接。

在一实施例中,文档接口采用python中的xlrd工具包,将文档信息输入到xlrd工具包中,或者将文档信息与xlrd工具包关联,xlrd工具包即可与对应的表数据储存文档建立连接。

在其他实施例中,文档接口只要采用能够与对应类型的表数据储存文档建立连接即可,例如在表数据储存文档的类型为word文档时,则采用目标运行环境中对应的接口工具包,读取word文档的文档信息,与word文档建立连接。

S130、获取表关系型数据库的数据库信息。

数据库信息包括数据库库名、数据库ip端口、数据库账号、数据库密码中的至少一个,旨在通过数据库信息可以确定出唯一的达梦数据库即可。需要说明的是,对于需要使用账号和密码才能进入的表关系型数据库,数据库信息中必须包括对应的数据库账号和数据库密码。具体的,在一实施例中,数据库信息的获取方式为从预设的第二列表中按照预设的获取顺序调取数据库信息;在另一实施例中,数据库信息和文档信息均储存在第三列表中,且均有对应关系,在获取文档信息后,获取第三列表中对应的数据库信息即可;或者在获取数据库信息后,获取第三列表中对应的文档信息。在又一实施例中,数据库信息为外设输入获得。

S140、调取数据库接口,基于数据库接口和数据库信息与表关系型数据库建立连接。

在一实施例中,数据库接口采用python中的dmpython包,将数据库信息输入到dmpython包中,或者将数据库信息与dmpython包关联,dmpython包即可与对应的表关系型数据库建立连接。

在其他实施例中,数据库接口只要采用能够与对应类型的表关系型数据库建立连接即可,例如在表关系型数据库的类型为mysql数据库时,采用pymysql工具包与mysql数据库建立连接。

需要说明的是,步骤S110与S120具有执行顺序要求,即先执行S110,而后再执行S120;相应的,步骤S130与S140同样具有执行顺序要求,即先执行S130,再执行S140。但是步骤S110与S130之间没有执行顺序要求,既可以先执行S110,也可以先执行S130,亦或者同时执行S110与S130。

在得到文档信息和数据库信息后,即可自动建立连接,便于提高与表关系型数据库和表数据储存文档连接的效率,从而提高了表数据导入的效率。

参照图1,S200、基于与表数据储存文档建立的连接,获取表数据储存文档中的表项信息。

由于程序运行在目标运行环境中,因此想要到表数据储存文档中获得相关信息,需要与表数据储存文档维持连接状态。具体的,表项信息指表数据储存文档中表格的结构信息,例如表项信息可以包括表格的表名、表格的位置、表格的行数列数、表格的行名列名和表格中字体样式中的至少一个。

参照图3,在一应用场景中,步骤S200包括:

S210、获取目标表格的位置信息。

位置信息指目标表格所在的位置。在一实施例中,表数据储存文档为excel文档,由于一个excel文档中可以同时存在多张表格,因此目标表格的位置信息可以是目标表格两个对顶角的单元格信息,例如(A1:C3),即表示目标表格为三列三行,A1为目标表格第一行第一列的单元格位置,C3为目标表格第三行第三列的单元格位置;若excel文档中有且不仅有一个sheet页,在确定目标表格的位置时,还需增加sheet页数信息,即目标表格的位置信息中应包含有sheet页数信息。例如目标表格中包括sheet1、sheet2和sheet3,但每张sheet页中有且仅有一张表格,则目标表格的位置信息包括sheet页数信息即可;若每张sheet页中表格的数量不定,则目标表格的位置信息还需要包括目标表格两个对顶角的单元格信息。此外,目标表格的位置信息的获取方式可以与文档信息的获取方式相同或相似,在此不再赘述。

S220、基于位置信息锁定目标表格。

即通过位置信息得到目标表格的所有单元格的位置。

S230、基于预设的检索条件,获取目标表格中各列的列名;检索条件包括固定式条件或计算式条件。

由于对目标表格进行了锁定,即表示得知了目标表格各单元格的位置信息,例如目标表格第一行的位置,第一列的位置等。通过检索条件,对目标表格中各单元格的内容进行检索,即可得到各列的列名。在一实施例中,目标表格的所有列名构成表项信息。

通过预设的检索条件,自动获取目标表格的列名。无论是目标表格的锁定还是列名的获取均无需人工参与,减少了技术人员的工作量,提高了表项信息的获得效率,从而提高了表数据的导入效率。

具体的,参照图4,在一应用场景中,检索条件为固定式条件时,步骤S230包括:

S231、获取预设的行数信息。

行数信息即行数,在一实施例中,行数信息可以是2、3、4等数字;例如在行数信息为2时,指目标表格的第2行。在其他实施例中,行数信息可以是字母、符号及其组合,旨在能够通过行数信息在目标表格中找到指定的行即可。需要说明的是,在表数据储存文档为excel文档时,行数信息也可以指代excel文档某个sheet页的行数。例如在行数信息为2时,指的是excel文档中sheet1页中的第2行,此行可以是目标表格的第一行,也可以是目标表格的第二行;即只要能够与目标表格的其中一行对应即可。

S232、将目标表格中与行数信息对应的行判定为首行。

首行是相对于目标表格而言,而非excel文档中的第一行。例如目标表格的位置信息为(C6:I20),则目标表格的首行实际是excel文档中的第6行。

S233、读取首行中各单元格的内容,将首行中各单元格的内容确定为列名。

由于目标表格的位置确定了,因此列数也确定了,一旦首行确定完成,即可得到首行中各单元格中的内容;其中,单元格的内容即为列名。需要说明的是,此种方案通常适用于默认将列名布局在目标表格的第一行中的情况。

为了降低读取列名的局限性,参照图5,在检索条件为计算式条件时,步骤S230包括:

S234、沿列方向遍历目标表格,得到目标表格每行的列数信息。

列方向包括从上至下和从下至上两种情况,在本实施例中,列方向指从上至下的方向,例如excel中,从第一行向最后一行的方向;word中,从页首到页尾的方向。在一实施例中,列数信息与行数信息等同,均为数字,例如1、2、3等。为了便于理解,例如在遍历目标表格后,列数信息共有5个,分别1、10、10、10、2。则证明目标表格共有5行,首行仅有1列,目标表格的第二行有10列,以此类推。

S235、获取列数信息中的最大列数。

即在获得目标表格所有列数信息后,将列数信息进行大小对比,得到最大列数,以前文为例,最大列数即为10。当然,在其他实施例中,获得最大列数的方式也可以是每新获得一个列数信息即与保留的列数信息对比,得到暂时最大列数,再用暂时最大列数更新保留的列数信息,保证保留的列数信息始终是获得的所有列数信息中最大的。

S236、计算最大列数与预设的数量阈值之差,得到目标列数。

数量阈值为预设,可以是0、0.5、1、2、2.4、3等数字,具体根据实际的目标表格样式进行设定。例如,目标表格的表格样式为第一行为目标表格名称,仅有一列;第二行为目标表格创建时间、创建人和部门,即有3列;第三行为列名,列名包括编号、姓名、性别、年龄、联系方式、工作岗位,即有6列;第三行之后为具体的表内数据,且规定,一个单位最多录入2个联系方式,且在一个单位对应有2个联系方式时,将对应的单元格分为两列,分别填写联系方式。此时,第三行之后的,即第三行下方的各行所包含的列数可能出现7列,但是不会少于6列。对于此种情况,可以将数量阈值设定为1或2。

S237、沿列方向查找目标表格中首个列数数量大于或等于目标列数的目标行。

以上一个例子为准,只要最大列数7与数量阈值2的差值大于或等于列名所在行的列数6,且大于第二行的列数3即可。

S238、读取目标行中各单元格的内容,将目标行中各单元格的内容确定为列名。

目标行即通过计算确定的目标表格中列名所在的行,读取目标行中各单元格的信息即可得到列名。

需要说明的是,步骤S231-S233为一个实施例,步骤S234-S238为另一个实施例,两个实施例不能同时存在。在检索条件为固定式条件时,只需要将行数信息写入到程序中即可,方便快捷,程序运行不易出错。在检索条件为计算式条件时,能够降低获取列名时对目标表格的表格样式的要求,便于降低获取列名的局限性,使更多表格样式的目标表格均适用,提高了获取目标表格的表项信息的灵活性。

参照图1,S300、基于与表关系型数据库建立的连接和表项信息在表关系型数据库中创建数据表。

由于需要在表关系型数据库中创建数据表,因此需要维持与表关系型数据库之间的连接关系。在一实施例中,表项信息即目标表格的所有列名,因此,将表项信息作为数据表的表结构,即可在表关系型数据库中创建相应的数据表。

具体的,参照图6,在一应用场景中,步骤S300包括:

S310、获取数据表的表名。

数据表的表名指表关系型数据库中数据表的表名,在一实施例中指达梦数据库中数据表的表名。表名可以是人为输入,也可以是从预设的表名队列中自动获得。

S320、判断表关系型数据库中是否存在与表名同名的数据表。

避免重复创建数据表,造成资源浪费以及后续的数据错乱。

若是,执行步骤S330;否则,执行步骤S340。

S330、将列名输入到对应表名的数据表中。

即完成数据表表结构的录入动作。

S340、创建与表关系型数据库相关联的建表游标。

具体的,在python环境中,想要在达梦数据库中执行动作,需要创建游标,通过游标遍历SQL语句。在本实施例中,游标即建表游标。在创建建表游标时,将表关系型数据库的数据库信息赋予给建表游标的创建语句cursor(),即可将建表游标与表关系型数据关联。

参照图6,在步骤S340之后,还包括:

S350、启动建表游标,并确定基于表名和表项信息组合得到建表执行指令。

在一实施例中,建表游标启动后,建表游标即开始遍历与达梦数据库相关联的SQL语句。与此同时,将获得的数据表的表名与从excel文档中目标表格处获得的表项信息进行组合,得到建表执行指令。需要说明的是,该建表执行指令为SQL语句,即能够在达梦数据库中生成相应操作,具体的,建表执行指令的结构为createtable+表名+(列名1,列名2,……)。

S360、基于建表游标遍历建表执行指令,以在表关系型数据库中创建数据表。

一方面,建表游标与表关系型数据库相关联,且表关系型数据库持续维持连接状态;另一方面,建表执行指令中包含有表名和表项信息。因此能够在表关系型数据库中创建出数据表。

在获取表名后,先判断表关系型数据库中是否已存在相同表名的数据表,避免在执行后续步骤时,数据错乱,因此降低了故障率,保证了创建数据表的效率。在表关系型数据库中不存在相同表名的数据表时,自动创建建表游标和建表执行指令,在表关系型数据库中进行建表动作,得到与目标表格的列名对应的数据表。自动化执行,无需人工干预,减少了人工工作量,同时提高了创建数据表的效率。

参照图1,S400、将表数据储存文档中的表内数据写入数据表。

表内数据指目标表格中,位于列名所在行下方,且单元格中内容与列名对应的数据。例如现有目标表格A:

则目标表格A中的列名包括编号、姓名、性别和部门;目标表格A中的表内数据包括第二行的1、Abc、男和LL;以及第三行的2、Bcd、男和LL。

参照图7,在一应用场景中,步骤S400包括:

S410、基于表名和列名得到插入数据。

具体的,表名和列名已经获得,插入数据的结构为:表名+(列名1,列名2,列名3,……)。

S420、按照行数读取目标表格中位于列名所在行下方的表内数据;每次读取一行。

以前文的目标表格A为例,目标表格A中,列名所在行指目标表格A的首行,位于列名所在行下方指目标表格A的第二行和第三行。每次读取一行,即将一行中所有单元格中的内容读取出。

需要说明的是,步骤S410和S420没有执行顺序要求,可以同时执行,也可以先执行S420,后执行S410。在本实施例中,先执行步骤S410,在执行步骤S420。

在步骤S420之后,还包括:

S430、基于插入数据和表内数据组合得到插入信息。

即将插入数据与表内数据进行组合,需要说明的是,由于表内数据的数量至少有一条,因此在一实施例中,表内数据可以有至少两条。以5条为例,每条表内数据均会与插入数据组合,因此插入信息的条数与表内数据的条数相同。

具体的,插入信息的结构为:表名+(列名1,列名2,列名3,……)+(值1,值2,值3,……)。其中,每条表内数据均包括值1、值2和值3等。

S440、创建与表关系型数据库相关联的插入游标。

插入游标的创建方式与建表游标的相同,此处不再赘述。

S450、启动插入游标,并确定基于插入信息得到的插入动作指令。

在一实施例中,插入游标启动后,插入游标即开始遍历与达梦数据库相关联的SQL语句。与此同时,将获得的插入信息与预设的句式信息组合后得到插入动作指令。其中,句式信息包括insertinto和values。插入动作指令的结构为:insertinto+表名+(列名1,列名2,列名3,……)+values+(值1,值2,值3,……)。

S460、基于插入游标遍历插入执行指令,以将表内数据录入到数据表中。

由于插入信息至少有一条,因此得到的插入动作指令也至少有一条,即插入动作指令与插入信息的数量相同。插入游标遍历一条插入执行指令,则在表关系型数据库内对应的数据表中录入插入执行指令包含的表内数据。

此外,为了减少执行步骤,在本应用场景下,可以在步骤S410中,直接将insertinto插入到表名之前,即得到的插入数据的结构为:insertinto+表名+(列名1,列名2,列名3,……)。

而后在执行步骤S430时,将values插入到列名与表内数据之间,使插入信息的结构变为:insertinto+表名+(列名1,列名2,列名3,……)+values+(值1,值2,值3,……)。致使生成的插入信息的结构与插入执行指令的结构相同,从而得到与插入执行指令相同功能的插入信息。此时直接启动插入游标即可,不再需要确定基于插入信息得到的插入动作指令。减少了执行步骤,有助于降低运行压力,减少储存空间占用和提高表内数据的导入效率。

参照图8,在另一应用场景中,步骤S400包括:

S420、按照行数读取目标表格中位于列名所在行下方的表内数据;每次读取一行。

与前一应用场景中的步骤S420相同,不再赘述。

S431、基于表名、列名和表内数据,生成至少一个数据信息。

数据信息由表名、列名和表内数据组合而成,具体的,数据信息的结构为:表名+(列名1,列名2,列名3,……)+(值1,值2,值3,……)。由于表内数据至少有一条,因此数据信息至少有一条。即数据信息的数量与表内数据的数量相同。

S440、创建与表关系型数据相关联的插入游标。

与前一应用场景中的步骤S440相同,不再赘述。

S451、启动插入游标,并确定基于数据信息得到的插入执行指令。

插入执行指令的结构为:insertinto+表名+(列名1,列名2,列名3,……)+values+(值1,值2,值3,……)。即在表名的前方增加insertinto,在列名与表内数据之间增加values,形成插入执行指令。

S461、基于插入游标遍历插入执行指令,以将表内数据录入到数据表中。

与前一应用场景不同的是,在本应用场景下,先获取表内数据,而后将表名、列名和表内数据组合构成数据信息,最后基于SQL语句的句式要求,在数据信息中添加必要字段,形成插入执行指令。整个执行过程同样无需人工干预,提高了导入表数据的效率。

本申请一实施例的表数据导入表关系型数据库的实施原理为:与达梦数据库和excel文档建立连接后,首先从excel文档中确定目标表格的位置,读取目标表格中各列的列名。而后在达梦数据库中创建数据表,将列名作为数据表的表结构写入至数据表中。最后到excel中读取目标表格的表数据,即表内数据,将表数据输入到达梦数据库对应的数据表内,完成表数据的自动导入。提高了表数据导入的效率和质量。为了便于理解,如图9所示,为excel文档中的表格,该表格共有5行8列,位置为(A1:H5),即第一行第一列的单元格是A1,第五行第八列的单元格是H5;其中,表格第一行单元格中的内容为列名,第二行至第五行单元格中的内容为表内数据。如图10所示,为达梦数据库中根据图9中的表格生成的数据表。

本申请实施例还公开一种表数据导入表关系型数据库的系统,应用在目标运行环境中,参照图11,包括连接模块1,用于与表关系型数据库和表数据储存文档均建立连接。获取模块2,用于基于与表数据储存文档建立的连接,获取表数据储存文档中的表项信息。建表模块3,用于基于与表关系型数据库建立的连接和表项信息在表关系型数据库中创建数据表。以及写入模块4,用于将表数据储存文档中的表内数据写入数据表。

在一实施例中,连接模块1包括文档获取单元、数据库获取单元和连接单元。文档获取单元用于获取表数据储存文档的文档信息;数据库获取单元用于获取表关系型数据库的数据库信息;连接单元用于调取文档接口和数据库接口,并基于文档接口和文档信息与表数据储存文档建立连接,以及基于数据库接口和数据库信息与表关系型数据库建立连接。

获取模块2包括表格获取单元、表格锁定单元和检索单元。表格获取单元用于获取目标表格的位置信息;表格锁定单元用于基于位置信息锁定目标表格;检索单元用于基于预设的检索条件,获取目标表格中各列的列名。其中,检索条件包括固定式条件和计算式条件。

具体的,在检索条件为固定式条件时,检索单元包括调取子单元,用于获取预设的行数信息;首行子单元,用于将目标表格中与行数信息对应的行判定为首行;以及读取子单元,用于读取首行中各单元格的内容,将首行中各单元格的内容确定为列名。

在检索条件为计算式条件时,检索单元包括列数子单元,用于沿列方向遍历目标表格,得到目标表格每行的列数信息;比较子单元,用于获取列数信息中的最大列数;计算子单元,用于计算最大列数与预设的数量阈值之差,得到目标列数;目标行子单元。用于沿列方向查找目标表格中首个列数数量大于或等于目标列数的目标行;以及列名子单元,用于读取目标行中各单元格的内容,将目标行中各单元格的内容确定为列名。

建表模块3包括表名单元、第一游标单元、第二指令单元和建表单元。表名单元用于获取数据表的表名;游标单元用于创建与表关系型数据库相关联的建表游标;第二指令单元用于启动建表游标,并确定基于表名和表项信息组合得到建表执行指令;建表单元用于基于建表游标遍历建表执行指令,以再表关系型数据库中创建数据表。

写入模块4包括读取单元、组合单元、第二游标单元、第二指令单元和导入单元。读取单元用于按照行数读取目标表格中位于列名所在行下方的表内数据;每次读取一行;组合单元用于基于表名、列名和表内数据,生成至少一个数据信息;第二游标单元用于创建与表关系型数据库相关联的插入游标;第二指令单元用于启动插入游标,并确定基于数据信息得到的插入执行指令;导入单元用于基于插入游标遍历插入执行指令,以将表内数据录入到数据表中。

这里需要指出的是:以上应用于表数据导入表关系型数据库的系统实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果。对于本发明表数据导入表关系型数据库的系统实施例中未披露的技术细节,本领域的技术人员请参照本发明方法实施例的描述而理解。

需要说明的是,本发明实施例中,如果以软件功能模块的形式实现上述方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read OnlyMemory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。

相应地,本申请实施例还公开一种存储介质,存储有能够被处理器加载并执行上述方法的计算机程序。

本申请实施例还公开一种表数据导入表关系型数据库的装置,包括存储器和处理器,存储器中存储有表数据导入表关系型数据库的方法;处理器用于在执行表数据导入表关系型数据库的方法时采用上述方法。

以上应用于表数据导入表关系型数据库的装置和存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明表数据导入表关系型数据库的装置和存储介质实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台设备执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

相关技术
  • 表数据导入表关系型数据库的方法、系统、装置及存储介质
  • 关系型数据库的表结构导入方法、系统、装置及存储介质
技术分类

06120114696991