一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

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

2022-06-22 22:55:36 来源:中国专利 TAG:
1.本发明涉及一种数据表表结构处理
技术领域
:,尤其涉及一种关系型数据库的表结构导入方法、系统、装置及存储介质。
背景技术
::2.数据库通常分为关系型数据库和非关系型数据库,两种类型的数据库均用于数据存储。其中,关系型数据库因其容易理解、使用方便和易于维护,逐渐称为了主流数据库,常见的关系型数据库有oracle、mysql、microsoftsqlserver和达梦数据库。3.所谓关系,可以理解为一张二维表,又叫做数据表;每个关系都具有一个关系名,通常称为表名。数据被记录在关系型数据库下的各个数据表中,使数据表具有了表结构;每个数据表因存储数据类型的不同,表结构上也略显差异。4.现有技术中,因科技的发展或制度变革,常出现需要将关系型数据库中的表结构整体导入到另一个关系型数据库中的情况。受数据表数量大的影响,表结构的数量也颇为巨大,导致导入过程操作繁琐,耗时耗力,影响了导入效率。技术实现要素:5.有鉴于此,本发明提供了一种关系型数据库的表结构导入方法、系统、装置及存储介质,用于解决现有技术中的表结构导入效率低的问题。为达上述之一或部分或全部目的或是其他目的,本发明提出一种关系型数据库的表结构导入方法、系统、装置及存储介质,第一方面:6.一种关系型数据库的表结构导入方法,应用于目标运行环境中,所述方法包括:7.在与第一数据库和第二数据库均建立连接后,生成执行游标;所述第一数据库和所述第二数据库均为关系型数据库;所述执行游标与所述第一数据库和所述第二数据库均关联;8.启动所述执行游标,执行基于所述连接从所述第一数据库中获取第一数据表的表名的读取操作;9.基于获取的所述表名调取对应所述第一数据表的表结构信息;10.基于所述执行游标和所述表结构信息,生成携带有所述表结构信息的建表执行指令;11.基于所述执行游标遍历所述建表执行指令,以在所述第二数据库中创建第二数据表。12.优选地,所述基于所述执行游标和所述表结构信息,生成携带有所述表结构信息的建表执行指令的步骤包括:13.获取所述建表指令模型,根据所述建表指令模型得到首端目标添加信息和/或尾端目标添加信息;14.启动所述执行游标,执行将所述首端目标添加信息和/或尾端目标添加信息与所述表结构信息组合形成所述建表执行指令的组合操作。15.优选地,所述执行游标包括与所述第一数据库关联的第一游标;16.所述启动所述执行游标,执行基于所述连接从所述第一数据库中获取第一数据表的表名的读取操作的步骤包括:17.获取预设的表名标识并启动所述第一游标;18.基于启动的所述第一游标,执行基于所述表名标识到所述第一数据库中查找并调取表名的读取操作。19.优选地,所述执行游标还包括与所述第一数据库关联的第二游标;20.所述基于获取的所述表名调取对应所述第一数据表的表结构信息的步骤包括:21.启动所述第二游标,执行到预设的储存空间中查找所述表名的查找操作;22.调取所述储存空间中与查找到的所述表名关联的表结构信息。23.优选地,在所述生成执行游标之前,还包括:24.在未与所述第一数据库建立连接时,获取第一目标接口和所述第一数据库的第一库信息;25.基于所述第一目标接口和所述第一库信息与所述第一数据库建立连接;26.在未与所述第二数据库建立连接时,获取第二目标接口和所述第二数据库的第二库信息;27.基于所述第二目标接口和所述第二库信息与所述第二数据库建立连接。28.优选地,所述执行游标包括第一游标、第二游标和第三游标;29.所述生成执行游标的步骤包括:30.获取游标指令模型;31.将所述第一库信息和所述游标指令模型组合后生成读取所述第一数据库中所述表名用的所述第一游标;32.将所述第一库信息和所述游标指令模型组合后生成构建所述建表执行指令用的所述第二游标;33.将所述第二库信息和所述游标指令模型组合后生成在所述第二数据库中创建所述第二数据表用的所述第三游标。34.优选地,在所述基于所述执行游标和所述建表执行指令,在所述第二数据库中创建第二数据表时,所述方法还包括:35.判断创建所述第二数据表是否出现故障;36.若是,输出报警信息。37.第二方面:38.一种关系型数据库的表结构导入系统,应用于目标运行环境中,包括游标模块,用于在与第一数据库和第二数据库均建立连接后,生成执行游标;39.表名获取模块,用于启动所述执行游标,执行基于所述连接从所述第一数据库中获取第一数据表的表名的读取操作;40.调取模块,用于基于获取的所述表名调取对应所述第一数据表的表结构信息;41.修改模块,用于基于所述执行游标和所述表结构信息,生成携带有所述表结构信息的建表执行指令;42.以及创建模块,用于基于所述执行游标遍历所述建表执行指令,以在所述第二数据库中创建第二数据表。43.第三方面:44.一种关系型数据库的表结构导入装置,包括存储器和处理器,所述存储器中存储有关系型数据库的表结构导入方法;所述处理器用于在执行所述关系型数据库的表结构导入方法时采用上述方法。45.第四方面:46.一种存储介质,存储有能够被处理器加载并执行上述方法的计算机程序。47.实施本发明实施例,将具有如下有益效果:48.通过在目标运行环境中,与第一数据库和第二数据库均建立连接;而后从第一数据库中读取第一数据库中所有第一数据表的表名,在根据表名,调取第一数据库中所有第一数据表的表结构信息;最后根据表结构信息自动在第二数据库中创建第二数据表,且第二数据表与第一数据库中对应表结构信息的第一数据表的表结构相同,从而完成关系型数据库间表结构的导入工作。整个过程工作人员无需输入过多的数据,无需多次参与控制,第一数据库中的表结构自动导入到第二数据库中,提高了表结构的导入效率,减少了人工成本。附图说明49.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。50.其中:51.图1为一个实施例中关系型数据库的表结构导入方法的整体流程图。52.图2为一个实施例中与第一数据库和第二数据库建立连接的流程图。53.图3为一个实施例中查找表名的流程图。54.图4为一个实施例中生成建表执行指令的流程图。55.图5为另一个实施例中关系型数据库的表结构导入方法的整体流程图。56.图6为一个实施例中关系型数据库的表结构导入系统的结构框图。具体实施方式57.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。58.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。59.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的
技术领域
:的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。60.对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。61.关系型数据库:是指采用了关系模型来组织数据的数据库,以列和行的形式储存数据。一系列的行和列被称为表或数据表,需要储存数据时,需要先定义表的结构,即数据表的各个字段,而后再根据表结构存入数据,因此数据表的可靠性和稳定性较高,但表结构难以修改。常见的关系型数据库有oracle、mysql、microsoftsqlserver和达梦数据库。62.python:具有解释性、编译性、互动性和面向对象的脚本语言。63.dmpython包:用于为python连接达梦数据库提供必要的连接包。64.pymysql包:用于为python连接mysql数据库提供必要的连接包。65.本发明实施例提供一种关系型数据库的表结构导入方法,应用于目标环境中。本发明实施例提供的关系型数据库的表结构导入方法可以通过计算机程序来实现,该计算机程序在执行的时候,完成本发明实施例提供的关系型数据库的表结构导入方法中各个步骤。66.参照图1,关系型数据库的表结构导入方法包括:67.s100、在目标运行环境中,与第一数据库和第二数据库均建立连接。68.在一实施例中,目标运行环境采用python环境,即在python服务器下,使用python语言;第一数据库和第二数据库均为关系型数据库,在本实施例中,第一数据库采用mysql数据库,第二数据库采用达梦数据库。为了便于进一步理解,对与第一数据库和第二数据库建立连接进行阐述。69.参照图2,在未与第一数据库建立连接时,步骤s100包括:70.s110、获取第一目标接口和第一数据库的第一库信息。71.其中,第一目标接口指pymysql包或pymysql包提供的接口;第一数据库为mysql数据库;第一库信息包括第一库名、第一端口、第一库账号和第一库密码中的至少一个,意在能够根据第一库信息确定出唯一的mysql数据库。72.在一实施例中,获取第一库信息的方式为自动获取。首先预先设置第一库信息列表,第一库信息列表中至少包括一个第一库信息。在需要获取第一库信息时,到第一库信息列表中调取指定的第一库信息即可。调取的顺序可以按照第一库信息列表的排列顺序,也可以按照其他顺序,意在能够调取出第一库信息即可。例如,需要获取第一库信息时,从第一库信息列表中随机抽取一个第一库信息,并将随机抽取的第一库信息从第一库信息列表中删除,避免重复抽取即可。73.在另一实施例中,第一库信息的获取方式为手动输入,即需要获取第一库信息时,弹出输入框;而后解析输入框中的内容,得到第一库信息。74.在一实施例中,第一目标接口到预设的位置直接调取即可。75.s120、基于第一目标接口和第一库信息与第一数据库建立连接。76.在一实施例中,将第一库信息输入到第一目标接口中,或者将第一库信息与第一目标接口关联,即完成与对应的第一数据库的连接。例如,在一应用场景中,定义函数mysqlconn=pymysql.connect(host='10.8.9.138',77.user='rdapp',78.passwd='nucleus!',79.port=3306,80.db='%s'%dbname)81.其中,pymysql.connect为第一目标接口,host='10.8.9.138',user='rdapp',passwd='nucleus!',port=3306,db='%s'%dbname为第一库信息。具体的,host指第一数据库的ip、user指用户名、passwd指第一库密码、port指第一端口、db指第一库名。将第一库信息引入到第一目标接口中,实现与第一数据库连接关系的建立。通过第一目标接口与第一数据库建立连接后,即可在目标运行环境中对第一数据库进行控制,或者在第一数据库中进行动作;例如读取、写入和增删改查。避免了无法在第一数据库以外的运行环境中,无法对第一数据库进行操作控制的缺陷。82.参照图2,在未与第二数据库建立连接时,步骤s100包括:83.s130、获取第二目标接口和第二数据库的第二库信息。84.在一实施例中,第二目标接口指dmpython包或dmpython包提供的接口;第二数据库为达梦数据库;第二库信息包括第二库名、第二端口、第二库账号和第二库密码中的至少一个,意在能够根据第二库信息确定出唯一的达梦数据库。85.在一实施例中,获取第二库信息的方式为自动获取。首先预设设置第二库信息列表,第二库信息列表中至少包括一个第二库信息。在需要获取第二库信息时,到第二库信息列表中调取指定的第二库信息即可。调取的顺序可以按照第一库信息列表的排序顺序,也可以按照其他顺序,意在能够调取出第二库信息即可。例如,需要获取第二库信息时,按照第二库信息存入第二库信息列表中的先后顺序依次调取。86.在另一实施例中,第二库信息的获取方式为手动输入,即需要获取第二库信息时,弹出输入框;而后解析输入框中的内容,得到第二库信息。87.在一实施例中,第二目标接口到预设的位置直接调取即可。88.s140、基于第二目标接口和第二库信息与第二数据库建立连接。89.在一实施例中,将第二库信息输入到第二目标接口中,或者将第二库信息与第二目标接口关联,即完成与对应的第二数据库的连接。例如,在一应用场景中,定义函数dmconn=dmpython.connect(user='sysdba',90.password='sysdba',91.server='10.8.9.138',92.port=3306)93.其中,dmpython.connect为第二目标接口,user='sysdba',password='sysdba',server='10.8.9.138',port=3306为第二库信息。具体的,user指用户名、password指第二库密码、server指第二数据库的ip、port指第二端口。将第二库信息引入到第二目标接口中,实现与第二数据库连接关系的建立。通过第二目标接口与第二数据库建立连接后,即可在目标运行环境中对第二数据库进行控制,或者在第二数据库中进行动作;例如读取、写入和增删改查。避免了无法在第二数据库以外的运行环境中,难以对第二数据库进行操作控制的缺陷。此外,由于在同一目标运行环境中,与第一数据库和第二数据库均建立了连接,便于在第一数据库和第二数据库之间进行数据操作,从而实现表结构的导入。94.需要说明的是,步骤s110和s120之间具有执行顺序要求,步骤s130和s140之间具有执行顺序要求;步骤s110和步骤s130之间没有执行顺序要求。例如,在一实施例中,与第一数据库和第二数据库均处于未连接的状态,则可以同时执行s110和s130,也可以先执行s110,再执行s130,亦可以先执行s130,再执行s110。在另一实施例中,若第二数据库已经处于连接状态,则无需再次执行s130和s140,仅执行s110和s120即可。在其他实施例中,若第一数据库和第二数据库均处于连接状态,可以不执行步骤s110-s140,即不再执行步骤s100。95.参照图1,在与第一数据库和第二数据库均建立连接后,s200、生成执行游标。96.执行游标是python环境中,执行sql语句的前提条件。即想要在python环境中,对第一数据库和/或第二数据库进行增删改查等操作,需要执行sql语句,此时必须创建相应的执行游标,以遍历sql语句。通过sql语句,在第一数据库和/或第二数据库中进行相关操作。97.为了避免数据混乱,在一实施例中,执行游标与第一数据库和第二数据库均关联。98.具体的,执行游标包括第一游标、第二游标和第三游标。99.步骤s200包括:100.s210、获取游标指令模型。101.在本实施例中,游标指令模型采用cursor()语句,通过cursor()语句可以创建执行游标。游标指令模型的获取方式可以是自动到预设的位置获取,也可以是人为输入获得。102.s220、将第一库信息和游标指令模型组合后生成读取第一数据库中表名用的第一游标。103.即将第一库信息赋予给游标指令模型,使第一库信息和游标指令模型建立关联关系,得到与第一数据库相关联的第一游标。104.s230、将第一库信息和游标指令模型组合后生成构建建表执行指令用的第二游标。105.第二游标的生成方式与第一游标相同,不再赘述。106.s240、将第二库信息和游标指令模型组合后生成在第二数据库中创建第二数据表用的第三游标。107.第三游标的生成方式与第一游标相同或相似,不再赘述。第一库信息和第二库信息均可以自动获取,游标指令模型也为自动获取,整个过程无需人工干预,自动执行,有助于减少人工需求,提高与第一数据库和第二数据库建立连接的效率,以及提高生成执行游标的效率。即使第一库信息和第二库信息为人为输入,但由于输入的信息较少,仍提高了建立连接的效率,从而提高了表结构的导入效率。108.需要说明的是,步骤s210执行完成后,s220、s230和s240可以同时执行,或者以任意顺序执行均可。109.参照图1,s300、启动执行游标,执行基于连接从第一数据库中获取第一数据表的表名的读取操作。110.具体的,启动的执行游标为第一游标。第一游标启动后,执行sql语句,即到第一数据库中获取第一数据表的表名。其中,由于需要到第一数据库中进行查找操作,因此与第一数据库的连接关系需要始终维持。此外,第一数据库中的所有数据表均被称为第一数据表,即需要获取第一数据库中所有第一数据表的表名。111.参照图3,步骤s300包括:112.s310、获取预设的表名标识并启动第一游标。113.表名标识可以预存在指定位置,需要获取表名标识时,自动到指定位置调取即可;表名标识也可以通过临时输入获得。表名标识可以由字母、数据、符合及其组合构成,意在能够根据表名标识获取到第一数据库中各个第一数据表的表名即可。例如,在一实施例中,每个第一数据表的表名中,均携带有表名标识,启动第一游标后,到第一数据库中查找表名标识,即可获得携带有表名标识的表名。再例如,在一实施例中,每个第一数据表的表名前,均设置有表名标识。启动第一游标后,到第一数据库中查找表名标识,而后获取表名标识后的字段即得到表名。114.s320、基于启动的第一游标,执行基于表名标识到第一数据库中查找并调取表名的读取操作。115.通过表名标识实现自动获取表名,无需人工参与,减少了人工需求,提高了第一数据表的表名获取效率。116.在一实施例中,步骤s300之后还包括:117.将表名合为表名列表。118.即按照预设的排列顺序,将获得的所有表名进行表列,得到表名列表。具体的,排列顺序可以按照表名的获得时间排序,也可以按照表名的首字母排序。119.在另一实施例中,在生成表名列表后,将表名列表输出。120.负责人可以及时得到表名列表,从而便于负责人判断表名列表中是否缺少表名,或者包含有错误数据,以及时补救,保证表结构的导入效率。121.参照图1,s400、基于获取的表名调取对应第一数据表的表结构信息。122.在一实施例中,表结构信息即第一数据表各列的列名组合。在mysql数据库中,每创建一个数据表,该数据表的表结构信息均会储存到information_schema中。因此,为了进一步减少人工需求,提高导入效率,在本实施例中,步骤s400包括:123.s410、启动第二游标,执行到预设的储存空间中查找表名的查找操作。124.储存空间即information_schema,在information_schema中,每个数据库的表结构信息均与对应的表名相关联。通过表名到information_schema中查找,即可获得对应第一数据表的表结构信息。125.s420、调取储存空间中与查找到的表名关联的表结构信息。126.具体的,表结构信息包括表名、表注释、字段名、字段类型、字符集、排序方式、字符集、是否为空、是否主键、是否自动递增和字段注释中的至少一个。在一实施例中,表结构信息的结构为字段名 字段类型 字符集 排序方式 是否为空。127.在一实施例中,从表名列表中依次调取表名。有助于降低重复概率,保证表结构的导入效率。128.在另一实施例中,由于每个第一数据表均具有列名,因此每个第一数据表均对应有表结构信息。即表结构信息的数量与第一数据表的数量相关,在一应用场景中,每个第一数据表仅对应有一行列名,则每个第一数据表仅对应有一个表结构信息。为了及时发现错误,在获取到表结构信息后,还包括:129.将表结构信息合为表结构信息列表。130.即将获得的所有表结构信息按照一定顺序排列,形成表结构信息列表。131.将表结构信息列表输出。132.负责人无需手动导出表结构信息,通过输出的表结构信息列表即可查看获取的所有表结构信息。有助于排查错误。133.s500、基于执行游标和表结构信息,生成携带有表结构信息的建表执行指令。134.在一实施例中,利用执行游标执行sql语句后,即根据表结构信息生成建表执行指令。由于表结构信息有多个,因此建表执行指令有多个,即每个表结构信息对应一个建表执行指令。135.具体的,参照图4,步骤s500包括:136.s510、获取建表指令模型,根据建表指令模型得到首端目标添加信息和/或尾端目标添加信息。137.建表指令模型为预设的语句模型,在一实施例中,建表指令模型为:createtable 库名.表名 表结构信息 );在需要获取建表指令模型时,到预设的储存位置调取即可;此外,也可以输出相应的请求信息,获取输入的建表指令模型。138.需要说明的是,在本实施例中,仅得到了表结构信息,因此在与建表指令模型对比后,可得首端目标添加信息为:createtable 库名.表名;尾端目标添加信息为:)。139.s520、启动执行游标,执行将首端目标添加信息和/或尾端目标添加信息与表结构信息组合形成建表执行指令的组合操作。140.执行游标启动后,执行sql语句。在一实施例中,执行游标指第二游标。第二游标遍历相应的sql语句,使在第一数据库中,在每个表结构信息前增加首端目标添加信息,即createtable 库名.表名;在每个表结构信息后增加尾端目标添加信息,即)。需要说明的是,库名指第一数据库的库名。此外,在建表指令模型中包含有库名时,第一库信息中必须包含有第一库名。141.通过增加首端目标添加信息和/或尾端目标添加信息,修改表结构信息的字段结构,使组合形成的建表执行指令在目标运行环境中执行时,第二数据库中形成相应的数据表;不仅使后续步骤实现了自动建表,也实现了自动搭建建表执行指令,无需人工操作,提高了导入效率。142.参照图1,s600、基于执行游标遍历建表执行指令,以再第二数据库中创建第二数据表。143.在一实施例中,执行游标指第三游标。基于第三游标,即启动第三游标。从而依次执行建表执行指令,在达梦数据库中创建第二数据表。144.参照图5,在一实施例中,在步骤s600之前,还包括:145.判断第二数据库中是否存在与第一数据库同名的数据库。146.若存在,则执行步骤s600;若不存在,则在第二数据库中创建与第一数据库库名相同的数据库,而后执行步骤s600。147.即在达梦数据库内的指定数据库中创建第二数据表,一方面便于第二数据表的管理,另一方面不易影响第二数据库中其他数据表。148.参照图5,在一实施例中,在步骤s600之后还包括:149.s700、判断创建第二数据表是否出现故障。150.若是,输出报警信息。若否,结束。151.对第二数据表的创建过程进行监测,一旦出现异常,立即发出报警信息。便于故障及时得到处理,从而有助于保证表结构导入的效率。152.具体的,在一实施例中,判断创建第二数据表是否出现故障的方式为:判断在创建第二数据表的过程中,是否出现语法分析错误;若出现,则判定出现故障;否则,判定未出现故障。153.其中,语法分析可以使用语法分析工具或者相应的语法监测程序进行。在出现语法分析错误后,停止创建第二数据表,并输出错误信息以及报警信息。在本实施例中,报警信息为:语法分析错误。通过分析语法发现故障,有助于降低误报率,保证第二数据表的顺利创建。此外,由于在出现故障后,停止创建第二数据表,有助于减少数据错乱,或者生成带有错误数据的第二数据表。154.在另一实施例中,判断创建第二数据表是否出现故障的方式为:判断第二数据表是否停止创建。若未停止创建,则判定未出现故障;若停止创建,判断所有建表执行指令是否均已执行;若均已执行,判定未出现故障;若未均已执行,判定出现故障。155.在一应用场景中,通过计数的方式判断所有建表执行指令是否均已执行。在生成所有的建表执行指令后,得到建表执行指令的总数量。而后每执行一个建表执行指令,则计数加一。在停止创建第二数据表时,对比计数的数量是否等于总数量,则可判定出建表执行指令是否全部执行。通过简单的逻辑,对第二数据表的创建过程进行监控,有助于控制成本,减少资源占用。同时便于及时发生故障,保证了表结构的导入效率。156.在另一实施例中,判断创建第二数据表是否出现故障的方式为:获取第二数据表的表名和表结构信息,并基于获取的表结构信息形成验证信息。157.将验证信息与对应获取的表名关联。158.将验证信息与第一数据库中对应表名的第一表结构信息对比;若相同,则判定未出现故障;若不同,判定出现故障。159.在一实施例中,可以随机抽取创建的第二数据表的表结构信息;在另一实施例中,可以抽取全部创建的第二数据表的表结构信息。通过自动检测、自动对比,有助于降低第二数据表的出错率,保证表结构的导入效率。160.在另一实施例中,判断创建第二数据表是否出现故障的方式为:按照表结构信息列表中的排列顺序,依次验证对应的第二数据表是否出现故障;若出现故障,输入对应表结构信息位于表结构信息列表中的序号,并验证下一个第二数据表;若未出现故障,则判定为无故障。161.需要说明的是,在本实施例中,需要创建表结构信息列表,并且生成建表执行指令的顺序与表结构信息列表中的排列顺序相同。以此,使位于表结构信息列表中的第一个表结构信息对应的第二数据表,第一个创建,并且第一个验证是否存在故障;位于表结构信息列表中的第三个表结构信息对应的第二数据表,第三个创建,并且第三个验证是否存在故障。以此类推,在出现故障时,输出对应的序号即可。在将所有的第二数据表验证结束后,负责人根据序号即可得知哪些第二数据表出现了错误。一方面,在出现故障后,无需停止后续第二数据表的创建,便于保证表结构的导入效率;另一方面,通过对比出现故障的第二数据表,便于追溯出现故障的问题根源,从而解决,以保证其他数据库中第二数据表的创建效率。162.此外,在一应用场景中,由于每次在第二数据库中创建一次第二数据表,则需要提交一次对应的sql语句;即每次第三游标在目标运行数据库中遍历一次建表执行指令,则需要写commit()提交一次。为了提高效率,在开始创建第二数据表前,开启自动提交,从而无需再写commit()。163.本实施例还公开一种关系型数据库的表结构导入系统,应用于目标运行环境中,参照图6,包括游标模块1、表名获取模块2、调取模块3、修改模块4和创建模块5。164.游标模块1用于在与第一数据库和第二数据库均建立连接后,生成执行游标。表名获取模块2用于启动执行游标,执行基于连接从第一数据库中获取第一数据表的表名的读取操作。调取模块3用于基于获取的表名调取对应第一数据表的表结构信息。修改模块4用于基于执行游标和表结构信息,生成携带有表结构信息的建表执行指令。创建模块5用于基于执行游标遍历建表执行指令,以在第二数据库中创建第二数据表。165.在一实施例中,系统还包括连接模块和报警模块。连接模块用于与第一数据库和第二数据库均建立连接。报警模块用于判断创建第二数据表是否出现故障,并在出现故障时,输出报警信息。166.在一实施例中,连接模块包括第一连接单元和第二连接单元。第一连接单元用于在未与第一数据库建立连接时,获取第一目标接口和第二数据库的第一库信息。第一连接单元还用于基于第一目标接口和第一库信息与第一数据库建立连接。第二连接单元用于在未与第二数据库建立连接时,获取第二目标接口和第二数据库的第二库信息。第二连接单元还用于基于第二目标接口和第二库信息与第二数据库建立连接。167.在一实施例中,游标模块1包括游标单元、第一生成单元、第二生成单元和第三生成单元。游标单元用于获取游标指令模型;第一生成单元用于将第一库信息和游标指令模型组合后生成读取第一数据库中表名用的第一游标;第二生成单元用于将第一库信息和游标指令模型组合后生成构建建表执行指令用的第二游标;第三生成单元用于将第二库信息和游标指令模型组合后生成在第二数据库中创建第二数据表用的第三游标。168.在一实施例中,获取模块2包括获取单元、启动单元和读取单元。获取单元用于获取预设的表名标识;启动单元用于启动第一游标;读取单元用于基于启动的第一游标,执行基于表名标识到第一数据库中查找并调取表名的读取操作。169.在一实施例中,调取模块3包括查找单元和调取单元。查找单元用于启动第二游标,执行到预设的储存空间中查找表名的查找操作;调取单元用于调取储存空间中与查找到的表名关联的表结构信息。170.在一实施例中,修改模块4包括添加单元和组合单元。添加单元用于获取建表指令模型,根据建表指令模型得到首端目标添加信息和/或尾端目标添加信息;组合单元用于启动执行游标,执行将首端目标添加信息和/或尾端目标添加信息与表结构信息组合形成建表执行指令的组合操作。171.这里需要指出的是:以上应用于关系型数据库的表结构导入系统实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果。对于本发明关系型数据库的表结构导入系统实施例中未披露的技术细节,本领域的技术人员请参照本发明方法实施例的描述而理解。172.需要说明的是,本发明实施例中,如果以软件功能模块的形式实现上述方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,readonlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。173.相应地,本技术实施例还公开一种存储介质,存储有能够被处理器加载并执行上述方法的计算机程序。174.本技术实施例还公开一种关系型数据库的表结构导入装置,包括存储器和处理器,存储器中存储有关系型数据库的表结构导入方法;处理器用于在执行关系型数据库的表结构导入方法时采用上述方法。175.以上应用于关系型数据库的表结构导入装置和存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明关系型数据库的表结构导入装置和存储介质实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。176.应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。177.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。178.在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。179.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。180.另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。181.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。182.或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台设备执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。183.以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献