一种信息处理方法、装置、设备及计算机可读存储介质与流程

文档序号:18301651发布日期:2019-07-31 10:13阅读:114来源:国知局
一种信息处理方法、装置、设备及计算机可读存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种信息处理方法、装置、设备及计算机可读存储介质。



背景技术:

apachespark是一个开源集群运算框架,基于scala语言开发并遵从apache2.0协议开源。sparksql(structuredquerylanguage,结构化查询语言),作为apachespark大数据框架的一部分,是一种新的分布式查询引擎,主要用于结构化数据处理和对spark数据执行类sql的查询。通过sparksql,可以针对不同格式的数据执行etl(extract-transform-load,数据抽取、转换、装载)操作(如json,parquet,数据库)然后完成特定的查询操作。sparksql相比传统的查询引擎最明显的特点就是数据兼容性和扩展性,因此被大量应用于结构化,非结构化的大数据查询分析领域。

现有技术中提出了一种基于hdfs(hadoopdistributedfilesystem,分布式文件系统)的spark-sql大数据处理系统上建立索引的方法,通过sql语句在基于hdfs的spark-sql大数据处理系统上增加索引,删除索引,插入数据,删除数据。在数据查询的时候,自动判断查询列是否存在索引,如果存在,则查找索引包含的文件块,过滤不需要查询的文件块。

但是,上述现有技术只针对外部数据库表的索引进行处理,并没有考虑如何区分对待表结构异同的表。因此,现有技术的方法增加了对具有相同表结构的表的解析的时间成本。



技术实现要素:

有鉴于此,本发明提供一种信息处理方法、装置、设备及计算机可读存储介质,以降低对具有相同表结构的表的解析的时间成本。

为解决上述技术问题,第一方面,本发明实施例提供一种信息处理方法,包括:

获取mysql服务器的连接信息以及待处理表的名称;

根据所述mysql服务器的连接信息以及所述待处理表的名称,确定是否存在与所述待处理表的表结构信息相同的目标表结构信息;

若存在所述目标表结构信息,则直接将所述目标表结构信息作为所述待处理表的表结构信息;若不存在所述目标表结构信息,则解析所述待处理表的表结构信息,并存储所述待处理表的表结构信息;

根据所述待处理表的表结构信息,分析结构化查询语言sql文并查询数据。

可选的,所述根据所述mysql服务器的连接信息以及所述待处理表的名称,确定是否存在与所述待处理表的表结构信息相同的目标表结构信息的步骤,包括:

根据所述mysql服务器的连接信息与所述mysql服务器建立连接;

根据所述待处理表的名称,从所述mysql服务器获取所述待处理表的元数据信息;

对所述元数据信息进行映射转换,获得所述元数据信息的映射值;

以所述映射值为关键字,在表结构信息库中查找是否存在与所述关键字匹配的目标表结构信息;

若所述表结构信息库中存在与所述关键字匹配的表结构信息,则确定存在所述目标表结构信息;否则确定不存在所述目标表结构信息。

可选的,所述根据所述待处理表的名称,从所述mysql服务器获取所述待处理表的元数据信息的步骤,包括:

根据所述待处理表的名称,从所述mysql服务器的系统表中读取所述待处理表的元数据信息;

其中,所述元数据信息包括:列名,列的类型,最长字符长度,精度,小数位,主键以及字符集。

可选的,所述对所述元数据信息进行映射转换,获得所述元数据信息的映射值的步骤,包括:

将所述元数据信息按照数据类型划分为varchar类型的元数据信息、int类型的元数据信息和nvarchar类型的元数据信息;

获得所述varchar类型的元数据信息对应的第一映射值;

获得所述int类型的元数据信息对应的第二映射值;

获得所述nvarchar类型的元数据信息对应的第三映射值;

将所述第一映射值、所述第二映射值和所述第三映射值进行组合,获得所述元数据信息的映射值。

可选的,所述获得所述varchar类型的元数据信息对应的第一映射值的步骤,包括:

对于所述varchar类型的元数据信息中的所有字符,从第一个字符开始,将当前字符转换为十进制数字,按照下述公式转换为映射值;直到所有字符转换完毕,获得第一映射值;

num1=x+a*num1,num1的初始值为0,a表示任一质数,x表示当前字符对应的十进制数字;

所述获得所述int类型的元数据信息对应的第二映射值的步骤,包括:

对于所述int类型的元数据信息中的所有字符,从第一个字符开始,按照下述公式转换为映射值;直到所有字符转换完毕,获得第二映射值;

num2=i+b*num2,num2的初始值为0,b表示任一质数,i表示当前字符的数值;

所述获得所述nvarchar类型的元数据信息对应的第三映射值的步骤,包括:

对于所述nvarchar类型的元数据信息中的所有字符,从第一个字符开始,将当前字符转换为十六进制数字,再将所述十六进制数字转换为十进制数字,按照下述公式转换为映射值;直到所有字符转换完毕,获得第三映射值;

num3=c+d*num3,num3的初始值为0,d表示任一质数,c表示当前字符对应的十进制数字。

可选的,所述varchar类型的元数据信息包括:列名,主键以及字符集;所述int类型的元数据信息包括:最长字符长度,精度以及小数位;所述nvarchar类型的元数据信息包括:列的类型。

可选的,所述若存在所述目标表结构信息,则直接将所述目标表结构信息作为所述待处理表的表结构信息的步骤,包括:

若存在所述目标表结构信息,则直接从所述表结构信息库中获取所述关键字对应的表结构信息,并将获取到的表结构信息作为所述目标表结构信息;

将所述目标表结构信息作为所述待处理表的表结构信息。

可选的,所述若不存在所述目标表结构信息,则解析所述待处理表的表结构信息,并存储所述待处理表的表结构信息的步骤,包括:

若不存在所述目标表结构信息,则解析所述待处理表的表结构信息;

在所述表结构信息库中,存储所述关键字和所述待处理表的表结构信息的对应关系。

第二方面,本发明实施例提供一种信息处理装置,包括:

获取模块,用于获取mysql服务器的连接信息以及待处理表的名称;

确定模块,用于根据所述mysql服务器的连接信息以及所述待处理表的名称,确定是否存在与所述待处理表的表结构信息相同的目标表结构信息;

处理模块,用于若存在所述目标表结构信息,则直接将所述目标表结构信息作为所述待处理表的表结构信息;若不存在所述目标表结构信息,则解析所述待处理表的表结构信息,并存储所述待处理表的表结构信息;

查询模块,用于根据所述待处理表的表结构信息,分析结构化查询语言sql文并查询数据。

第三方面,本发明实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;所述处理器执行所述计算机程序时实现如第一方面所述的方法中的步骤。

第四方面,本发明实施例提供一种计算机可读存储介质,用于存储计算机程序,其特征在于,所述计算机程序被处理器执行时实现如第一方面所述的方法中的步骤。

本发明的上述技术方案的有益效果如下:

在本发明实施例中,根据mysql服务器的连接信息以及待处理表的名称,确定是否存在与所述待处理表的表结构信息相同的目标表结构信息。若存在,则直接获取所述目标表结构信息,若不存在,则解析待处理表,并存储所述待处理表的表结构信息,以备下次处理其他库表时使用。因此,在本发明实施例中,仅需确定关系型数据库mysql的连接信息和待处理表的名称,sparksql就能利用表结构复用技术针对具有相同表结构的表,快速的获取表结构信息并进行大数据的查询处理,因此,利用本发明实施例大大降低了具有相同表结构的表的解析的时间成本。

附图说明

图1为本发明实施例的信息处理方法的流程图;

图2为本发明实施例的步骤102的流程图;

图3为本发明实施例的步骤1023的流程图;

图4为本发明实施例的信息处理方法的流程图;

图5为本发明实施例的信息处理装置的示意图;

图6为本发明实施例的确定模块的示意图;

图7为本发明实施例的信息映射子模块的示意图;

图8为本发明实施例的处理模块的示意图;

图9为本发明实施例的电子设备的示意图。

具体实施方式

下面将结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

如图1所示,本发明实施例的信息处理方法,可应用于sparksql,包括:

步骤101、获取mysql服务器的连接信息以及待处理表的名称。

其中,所述mysql的连接信息,包括mysql服务器的url(uniformresourcelocator,统一资源定位符),host(主机),port(端口),登陆的用户名和密码等。

步骤102、根据所述mysql服务器的连接信息以及所述待处理表的名称,确定是否存在与所述待处理表的表结构信息相同的目标表结构信息。

在此步骤中,如图2所示,包括如下过程:

步骤1021、根据所述mysql服务器的连接信息与所述mysql服务器建立连接。

步骤1022、根据所述待处理表的名称,从所述mysql服务器获取所述待处理表的元数据信息。

具体的,在此步骤中,根据所述待处理表的名称,从所述mysql服务器的系统表中读取所述待处理表的元数据信息。其中,所述元数据信息包括但不限于为:列名,列的类型,最长字符长度,精度,小数位,主键以及字符集。

在此,假设待处理表的名称为t,表t有四列,分别为<id,名称,年龄和性别>)。在此,可从mysql服务器原生自带的系统表info_schema中读取表t所对应四列的元数据信息,包括列名,列的类型,最长字符长度,精度,小数位,主键以及字符集等信息。

步骤1023、对所述元数据信息进行映射转换,获得所述元数据信息的映射值。

在取得列的元数据信息后,利用映射算法映射转换列的元数据信息。在此步骤中,如图3所示,可包括如下过程:

步骤10231、将所述元数据信息按照数据类型划分为varchar类型的元数据信息、int类型的元数据信息和nvarchar类型的元数据信息。

经分析,所述varchar类型的元数据信息包括:列名,主键以及字符集;所述int类型的元数据信息包括:最长字符长度,精度以及小数位;所述nvarchar类型的元数据信息包括:列的类型。

步骤10232、获得所述varchar类型的元数据信息对应的第一映射值。

步骤10233、获得所述int类型的元数据信息对应的第二映射值。

步骤10234、获得所述nvarchar类型的元数据信息对应的第三映射值。

步骤10235、将所述第一映射值、所述第二映射值和所述第三映射值进行组合,获得所述元数据信息的映射值。

步骤1024、以所述映射值为关键字,在表结构信息库中查找是否存在与所述关键字匹配的目标表结构信息。

在此,利用该关键字在缓存中匹配查询是否已经存在对应此关键字的表结构信息,即与所述待处理表的表结构信息相同的目标表结构信息。

步骤1025、若所述表结构信息库中存在与所述关键字匹配的表结构信息,则确定存在所述目标表结构信息;否则确定不存在所述目标表结构信息。

步骤103、若存在所述目标表结构信息,则直接将所述目标表结构信息作为所述待处理表的表结构信息。若不存在所述目标表结构信息,则解析所述待处理表的表结构信息,并存储所述待处理表的表结构信息。

若存在所述目标表结构信息,则无需对待处理表进行解析,可直接从所述表结构信息库中获取所述关键字对应的表结构信息,并将获取到的表结构信息作为所述目标表结构信息,将所述目标表结构信息作为所述待处理表的表结构信息。

若不存在所述目标表结构信息,则解析所述待处理表的表结构信息,在所述表结构信息库中,存储所述关键字和所述待处理表的表结构信息的对应关系。

具体的,sparksql执行解析处理,将待处理的mysql表的列的元数据解析为sparksql专用的表结构,以映射后的数值为关键字,解析后得到的表结构信息为value,将它们以一一对应的方式存入缓存。

步骤104、根据所述待处理表的表结构信息,分析结构化查询语言sql文并查询数据。

在本发明实施例中,根据mysql服务器的连接信息以及待处理表的名称,确定是否存在与所述待处理表的表结构信息相同的目标表结构信息。若存在,则直接获取所述目标表结构信息,若不存在,则解析待处理表,并存储所述待处理表的表结构信息,以备下次处理其他库表时使用。因此,在本发明实施例中,仅需确定关系型数据库mysql的连接信息和待处理表的名称,sparksql就能利用表结构复用技术针对具有相同表结构的表,快速的获取表结构信息并进行大数据的查询处理,因此,利用本发明实施例大大降低了具有相同表结构的表的解析的时间成本。

在以下的实施例中,用户需要利用sparksql从关系型数据库的库表中查询数据,这些表及其数据存放在mysql数据库中。在mysql数据库中,存放有100张具有相同表结构的表。表结构复用技术用来识别具有相同表结构的表,缓存表结构信息并复用这些信息以减少对相同表结构的表的重复解析,提高效率。

用户在确定应用后,会将mysql服务器的连接信息以及待处理的表名提供给sparksql,sparksql获得这些信息后,首先会跟mysql进行连接并获取待处理表的所有列的元数据信息。

如图4所示,本发明实施例的信息处理方法,包括:

步骤401、用户将mysql服务器的连接信息以及待处理的库表名(t)提供给sparksql;相应的,sparksql获取mysql服务器的连接信息以及待处理表的名称。

其中,所述mysql的连接信息,包括mysql服务器的url(uniformresourcelocator,统一资源定位符),host(主机),port(端口),登陆的用户名和密码等。

步骤402、sparksql根据所述mysql服务器的连接信息与所述mysql服务器建立连接,并根据待处理表名t(表t有四列,分别为<id,名称,年龄和性别>)从mysql原生自带的系统表info_schema中读取表t所对应四列的元数据信息,包括列名,列的类型,最长字符长度,精度,小数位,主键以及字符集。

步骤403、在取得列的元数据信息后,利用映射算法映射转换列的元数据信息,将其映射称为一串数值mapval。具体操作流程如下:

步骤4031、分析这四列的元数据信息的数据类型,将所述元数据信息按照数据类型划分为varchar类型的元数据信息、int类型的元数据信息(包括smallint、tinyint等)和nvarchar类型的元数据信息。

其中,数据库表与列,列与列的元数据关系如表1所示。

表1

步骤4032、获得所述varchar类型的元数据信息对应的第一映射值。

具体的,对于所述varchar类型的元数据信息中的所有字符,从第一个字符开始,将当前字符转换为十进制数字,按照下述公式转换为映射值;直到所有字符转换完毕,获得第一映射值;

num1=x+a*num1,num1的初始值为0,a表示任一质数,x表示当前字符对应的十进制数字。

也即,首先将varchar类型的元数据信息的一个字符按ascii(americanstandardcodeforinformationinterchange,美国标准信息交换代码)码映射为一个十进制数字(如a->65),然后选取一个质数进行相乘累加并作为下一个字符计算的被加数,接着读取下一个字符执行同样的操作直至拥有此类型的所有列的元数据信息读取完毕,得到映射后的数值num1。

例如,假设列名为“name”,假设质数a=31。那么,上述公式转换为:

num1=x+31*num1

那么从第一字符“n”开始,n的ascii为十进制数字78,由于num1的初始值为0,那么n对应的num1=78;第二个字符“a”,a的ascii十进制数字为65,在n的计算结果基础上,num1=65+31*78=2483;对于第三个字符“m”,m的ascii十进制数字为77,在a的计算结果基础上,num1=77+31*2483=77050;对于第四个字符“e”,e的ascii十进制数字为69,在m的计算结果基础上,num1=69+31*77050=2388619。因此,在此num1=2388619。

步骤4033、获得所述int类型的元数据信息对应的第二映射值。

对于所述int类型的元数据信息中的所有字符,从第一个字符开始,按照下述公式转换为映射值;直到所有字符转换完毕,获得第二映射值;

num2=i+b*num2,num2的初始值为0,b表示任一质数,i表示当前字符的数值。

具体的,对于所述int类型的元数据信息中的所有字符,从第一个字符开始,取一个质数进行相乘累加并作为下一个字符计算的被加数,接着读取下一个字符执行同样的操作直至拥有此类型的所有列的元数据信息读取完毕,得到映射后的数值num2。

例如,假设最长字符长度为192,128,假设质数b=131。在此,按照上述公式,由于num2的初始值为0,“192”对应的num2=192;对于“128”,在“192”计算结果的基础上,num2=128+131*192=25280。因此,在此num2=25280。

步骤4034、获得所述nvarchar类型的元数据信息对应的第三映射值。

对于所述nvarchar类型的元数据信息中的所有字符,从第一个字符开始,将当前字符转换为十六进制数字,再将所述十六进制数字转换为十进制数字,按照下述公式转换为映射值;直到所有字符转换完毕,获得第三映射值;

num3=c+d*num3,num3的初始值为0,d表示任一质数,c表示当前字符对应的十进制数字。

具体的,由于在此类型会包含非英文字符,如中文字符,按unicode(统一码)编码将每个中文字符映射为十六进制数值(如风->98ce),再转成十进制数字(98ce->39118),然后选取一个质数进行相乘累加并作为下一个字符计算的被加数,接着读取下一个字符执行同样的操作直至拥有此类型的所有列的元数据信息读取完毕,得到映射后的数值num3。

例如,假设列的类型中包括两个字“风”“格”,假设质数c=1313。在此,按照上述公式,“风”的十进制数字为39118,由于num3的初始值为0,“风”对应的num3=39118;“格”的十进制数字为43226,在“风”计算结果的基础上,num3=43226+1313*39118=51405160。因此,在此num3=51405160。

步骤4035、将所述第一映射值、所述第二映射值和所述第三映射值进行组合,获得所述元数据信息的映射值。

以前述步骤中的为例,在此将将num1,num2和num3组合在一起的数值作为关键字,即关键字为:23886192528051405160。

在映射完成后,即可进行表结构信息库匹配查询操作。

步骤404、以所述映射值mapval为关键字,在表结构信息库中查找是否存在与所述关键字匹配的目标表结构信息。

在此,利用该关键字在缓存中匹配查询是否已经存在对应此关键字的表结构信息,即与所述待处理表的表结构信息相同的目标表结构信息。

在此,将num1,num2和num3组合在一起的数值作为关键字在表结构信息库进行匹配查询。

步骤405、如果匹配成功,则说明与待处理的表有相同表结构的信息已经存在,则直接可以从表结构信息库中读取此关键字对应的表结构信息。

步骤406、如果匹配失败,则说明在表结构信息库中还没有符合待处理表的表结构信息,则sparksql执行解析处理,将待处理的mysql表解析为sparksql专用的表结构,接着以此关键字为key,解析后的sparksql专用表结构信息为value以一一对应的方式存入到表结构信息库,以备后续具有相同表结构的表复用。

步骤407、sparksql得到待处理表结构的信息,解析sql文。

步骤408、根据sql文对待处理的表t执行查询,获取查询结果。

在本实施例中,用户仅需确定关系型数据库mysql的连接信息和待处理表的名字,sparksql就能利用表结构复用技术针对具有相同表结构的表,快速的获取表结构信息并进行大数据的查询处理。在本实施例中的复用技术根据映射算法保证了在缓存中表结构信息与表的对应关系,同时利用缓存技术加速了表结构信息的读取速度,大大降低了具有相同表结构的表的解析的时间成本,也有效节约了系统资源。

如图5所示,本发明实施例的信息处理装置,包括:

获取模块501,用于获取mysql服务器的连接信息以及待处理表的名称;

确定模块502,用于根据所述mysql服务器的连接信息以及所述待处理表的名称,确定是否存在与所述待处理表的表结构信息相同的目标表结构信息;

处理模块503,用于若存在所述目标表结构信息,则直接将所述目标表结构信息作为所述待处理表的表结构信息;若不存在所述目标表结构信息,则解析所述待处理表的表结构信息,并存储所述待处理表的表结构信息;

查询模块504,用于根据所述待处理表的表结构信息,分析结构化查询语言sql文并查询数据。

其中,如图6所示,所述确定模块502包括:

连接建立子模块5021,用于根据所述mysql服务器的连接信息与所述mysql服务器建立连接;

信息获取子模块5022,用于根据所述待处理表的名称,从所述mysql服务器获取所述待处理表的元数据信息;

信息映射子模块5023,用于对所述元数据信息进行映射转换,获得所述元数据信息的映射值;

查找子模块5024,用于以所述映射值为关键字,在表结构信息库中查找是否存在与所述关键字匹配的目标表结构信息;

确定子模块5025,用于若所述表结构信息库中存在与所述关键字匹配的表结构信息,则确定存在所述目标表结构信息;否则确定不存在所述目标表结构信息。

其中,所述信息获取子模块5022具体用于,根据所述待处理表的名称,从所述mysql服务器的系统表中读取所述待处理表的元数据信息;其中,所述元数据信息包括:列名,列的类型,最长字符长度,精度,小数位,主键以及字符集。

其中,如图7所示,所述信息映射子模块5023包括:

划分单元50231,用于将所述元数据信息按照数据类型划分为varchar类型的元数据信息、int类型的元数据信息和nvarchar类型的元数据信息;

第一映射单元50232,用于获得所述varchar类型的元数据信息对应的第一映射值;

第二映射单元50233,用于获得所述int类型的元数据信息对应的第二映射值;

第三映射单元50234,用于获得所述nvarchar类型的元数据信息对应的第三映射值;

组合单元50235,用于将所述第一映射值、所述第二映射值和所述第三映射值进行组合,获得所述元数据信息的映射值。

其中,所述第一映射单元50232具体用于,对于所述varchar类型的元数据信息中的所有字符,从第一个字符开始,将当前字符转换为十进制数字,按照下述公式转换为映射值;直到所有字符转换完毕,获得第一映射值;

num1=x+a*num1,num1的初始值为0,a表示任一质数,x表示当前字符对应的十进制数字。

其中,所述第二映射单元50233具体用于,对于所述int类型的元数据信息中的所有字符,从第一个字符开始,按照下述公式转换为映射值;直到所有字符转换完毕,获得第二映射值;

num2=i+b*num2,num2的初始值为0,b表示任一质数,i表示当前字符的数值。

其中,所述第三映射单元50234具体用于,对于所述nvarchar类型的元数据信息中的所有字符,从第一个字符开始,将当前字符转换为十六进制数字,再将所述十六进制数字转换为十进制数字,按照下述公式转换为映射值;直到所有字符转换完毕,获得第三映射值;

num3=c+d*num3,num3的初始值为0,d表示任一质数,c表示当前字符对应的十进制数字。

其中,所述varchar类型的元数据信息包括:列名,主键以及字符集;所述int类型的元数据信息包括:最长字符长度,精度以及小数位;所述nvarchar类型的元数据信息包括:列的类型。

如图8所示,所述处理模块503包括:

第一获取子模块5031,用于若存在所述目标表结构信息,则直接从所述表结构信息库中获取所述关键字对应的表结构信息,并将获取到的表结构信息作为所述目标表结构信息;第一处理子模块5032,用于将所述目标表结构信息作为所述待处理表的表结构信息;

解析子模块5033,用于若不存在所述目标表结构信息,则解析所述待处理表的表结构信息;存储子模块5034,在所述表结构信息库中,存储所述关键字和所述待处理表的表结构信息的对应关系。

本发明所述装置的工作原理可参照前述方法实施例的描述。

在本发明实施例中,仅需确定关系型数据库mysql的连接信息和待处理表的名称,sparksql就能利用表结构复用技术针对具有相同表结构的表,快速的获取表结构信息并进行大数据的查询处理,因此,利用本发明实施例大大降低了具有相同表结构的表的解析的时间成本。

如图9所示,本发明实施例的电子设备包括:处理器900以及存储器910;

处理器900,用于读取存储器910中的程序,执行下列过程:

获取mysql服务器的连接信息以及待处理表的名称;

根据所述mysql服务器的连接信息以及所述待处理表的名称,确定是否存在与所述待处理表的表结构信息相同的目标表结构信息;

若存在所述目标表结构信息,则直接将所述目标表结构信息作为所述待处理表的表结构信息;若不存在所述目标表结构信息,则解析所述待处理表的表结构信息,并存储所述待处理表的表结构信息;

根据所述待处理表的表结构信息,分析结构化查询语言sql文并查询数据。

处理器900还用于读取所述计算机程序,执行如下步骤:

根据所述mysql服务器的连接信息与所述mysql服务器建立连接;

根据所述待处理表的名称,从所述mysql服务器获取所述待处理表的元数据信息;

对所述元数据信息进行映射转换,获得所述元数据信息的映射值;

以所述映射值为关键字,在表结构信息库中查找是否存在与所述关键字匹配的目标表结构信息;

若所述表结构信息库中存在与所述关键字匹配的表结构信息,则确定存在所述目标表结构信息;否则确定不存在所述目标表结构信息。

处理器900还用于读取所述计算机程序,执行如下步骤:

根据所述待处理表的名称,从所述mysql服务器的系统表中读取所述待处理表的元数据信息;

其中,所述元数据信息包括:列名,列的类型,最长字符长度,精度,小数位,主键以及字符集。

处理器900还用于读取所述计算机程序,执行如下步骤:

将所述元数据信息按照数据类型划分为varchar类型的元数据信息、int类型的元数据信息和nvarchar类型的元数据信息;

获得所述varchar类型的元数据信息对应的第一映射值;

获得所述int类型的元数据信息对应的第二映射值;

获得所述nvarchar类型的元数据信息对应的第三映射值;

将所述第一映射值、所述第二映射值和所述第三映射值进行组合,获得所述元数据信息的映射值。

处理器900还用于读取所述计算机程序,执行如下步骤:

对于所述varchar类型的元数据信息中的所有字符,从第一个字符开始,将当前字符转换为十进制数字,按照下述公式转换为映射值;直到所有字符转换完毕,获得第一映射值;

num1=x+a*num1,num1的初始值为0,a表示任一质数,x表示当前字符对应的十进制数字;

所述获得所述int类型的元数据信息对应的第二映射值的步骤,包括:

对于所述int类型的元数据信息中的所有字符,从第一个字符开始,按照下述公式转换为映射值;直到所有字符转换完毕,获得第二映射值;

num2=i+b*num2,num2的初始值为0,b表示任一质数,i表示当前字符的数值;

所述获得所述nvarchar类型的元数据信息对应的第三映射值的步骤,包括:

对于所述nvarchar类型的元数据信息中的所有字符,从第一个字符开始,将当前字符转换为十六进制数字,再将所述十六进制数字转换为十进制数字,按照下述公式转换为映射值;直到所有字符转换完毕,获得第三映射值;

num3=c+d*num3,num3的初始值为0,d表示任一质数,c表示当前字符对应的十进制数字。

其中,所述varchar类型的元数据信息包括:列名,主键以及字符集;

所述int类型的元数据信息包括:最长字符长度,精度以及小数位;

所述nvarchar类型的元数据信息包括:列的类型。

处理器900还用于读取所述计算机程序,执行如下步骤:

若存在所述目标表结构信息,则直接从所述表结构信息库中获取所述关键字对应的表结构信息,并将获取到的表结构信息作为所述目标表结构信息;

将所述目标表结构信息作为所述待处理表的表结构信息。

处理器900还用于读取所述计算机程序,执行如下步骤:

若不存在所述目标表结构信息,则解析所述待处理表的表结构信息;

在所述表结构信息库中,存储所述关键字和所述待处理表的表结构信息的对应关系。

此外,本发明实施例的计算机可读存储介质,用于存储计算机程序,所述计算机程序可被处理器执行实现以下步骤:

获取mysql服务器的连接信息以及待处理表的名称;

根据所述mysql服务器的连接信息以及所述待处理表的名称,确定是否存在与所述待处理表的表结构信息相同的目标表结构信息;

若存在所述目标表结构信息,则直接将所述目标表结构信息作为所述待处理表的表结构信息;若不存在所述目标表结构信息,则解析所述待处理表的表结构信息,并存储所述待处理表的表结构信息;

根据所述待处理表的表结构信息,分析结构化查询语言sql文并查询数据。

其中,所述根据所述mysql服务器的连接信息以及所述待处理表的名称,确定是否存在与所述待处理表的表结构信息相同的目标表结构信息的步骤,包括:

根据所述mysql服务器的连接信息与所述mysql服务器建立连接;

根据所述待处理表的名称,从所述mysql服务器获取所述待处理表的元数据信息;

对所述元数据信息进行映射转换,获得所述元数据信息的映射值;

以所述映射值为关键字,在表结构信息库中查找是否存在与所述关键字匹配的目标表结构信息;

若所述表结构信息库中存在与所述关键字匹配的表结构信息,则确定存在所述目标表结构信息;否则确定不存在所述目标表结构信息。

其中,所述根据所述待处理表的名称,从所述mysql服务器获取所述待处理表的元数据信息的步骤,包括:

根据所述待处理表的名称,从所述mysql服务器的系统表中读取所述待处理表的元数据信息;

其中,所述元数据信息包括:列名,列的类型,最长字符长度,精度,小数位,主键以及字符集。

其中,所述对所述元数据信息进行映射转换,获得所述元数据信息的映射值的步骤,包括:

将所述元数据信息按照数据类型划分为varchar类型的元数据信息、int类型的元数据信息和nvarchar类型的元数据信息;

获得所述varchar类型的元数据信息对应的第一映射值;

获得所述int类型的元数据信息对应的第二映射值;

获得所述nvarchar类型的元数据信息对应的第三映射值;

将所述第一映射值、所述第二映射值和所述第三映射值进行组合,获得所述元数据信息的映射值。

其中,所述获得所述varchar类型的元数据信息对应的第一映射值的步骤,包括:

对于所述varchar类型的元数据信息中的所有字符,从第一个字符开始,将当前字符转换为十进制数字,按照下述公式转换为映射值;直到所有字符转换完毕,获得第一映射值;

num1=x+a*num1,num1的初始值为0,a表示任一质数,x表示当前字符对应的十进制数字;

所述获得所述int类型的元数据信息对应的第二映射值的步骤,包括:

对于所述int类型的元数据信息中的所有字符,从第一个字符开始,按照下述公式转换为映射值;直到所有字符转换完毕,获得第二映射值;

num2=i+b*num2,num2的初始值为0,b表示任一质数,i表示当前字符的数值;

所述获得所述nvarchar类型的元数据信息对应的第三映射值的步骤,包括:

对于所述nvarchar类型的元数据信息中的所有字符,从第一个字符开始,将当前字符转换为十六进制数字,再将所述十六进制数字转换为十进制数字,按照下述公式转换为映射值;直到所有字符转换完毕,获得第三映射值;

num3=c+d*num3,num3的初始值为0,d表示任一质数,c表示当前字符对应的十进制数字。

其中,所述varchar类型的元数据信息包括:列名,主键以及字符集;

所述int类型的元数据信息包括:最长字符长度,精度以及小数位;

所述nvarchar类型的元数据信息包括:列的类型。

其中,所述若存在所述目标表结构信息,则直接将所述目标表结构信息作为所述待处理表的表结构信息的步骤,包括:

若存在所述目标表结构信息,则直接从所述表结构信息库中获取所述关键字对应的表结构信息,并将获取到的表结构信息作为所述目标表结构信息;

将所述目标表结构信息作为所述待处理表的表结构信息。

其中,所述若不存在所述目标表结构信息,则解析所述待处理表的表结构信息,并存储所述待处理表的表结构信息的步骤,包括:

若不存在所述目标表结构信息,则解析所述待处理表的表结构信息;

在所述表结构信息库中,存储所述关键字和所述待处理表的表结构信息的对应关系。

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

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

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述收发方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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