字段顺序一致性检测方法和装置与流程

文档序号:11155081阅读:239来源:国知局
本申请涉及计算机
技术领域
:,特别涉及一种字段顺序一致性检测方法和装置。
背景技术
::在目前的大数据时代,一般采用数据表对海量的数据进行存储和管理。在一些情况下,需要将预设数据保存至目标数据表中。所述预设数据可以包括从原数据表获取并按照预设规则处理后的数据。例如,从原数据表中获取数据,并按照预设规则处理所述数据,然后将处理后的数据保存至目标数据表中。在保存的过程中,可能出现预设数据中的字段顺序与目标数据表中的字段顺序不一致的问题,从而使目标数据表的数据产生混乱。因此,需要检测预设数据中的字段顺序与目标数据表的字段顺序,以使二者保持一致。现有技术中,通常采用人工的方式检测预设数据中的字段顺序与目标数据表中的字段顺序是否一致。即,采用人工的方式获取目标数据表的字段顺序,以及从预设数据对应的计算机语句中获取预设数据的字段顺序,然后检测预设数据中的字段顺序与目标数据表中的字段顺序是否一致。但是,人工检测通常成本较高并且效率较低,并且很容易出现遗漏或错误。技术实现要素:本申请实施例的目的是提供一种字段顺序一致性检测方法和装置,以提高检测的效率和准确性。为解决上述技术问题,本申请实施例提供一种字段顺序一致性检测方法和装置是这样实现的:一种字段顺序一致性检测方法。所述方法包括:获取目标数据表中第一顺序的字段属性;获取预设数据中第二顺序的字段属性;基于所述第一顺序的字段属性和所述第二顺序的字段属性,判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。一种字段顺序一致性检测装置。所述装置包括:第一获取模块,用于获取目标数据表中第一顺序的字段属性;第二获取模块,用于获取预设数据中第二顺序的字段属性;判断模块,用于基于所述第一顺序的字段属性和所述第二顺序的字段属性,判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。由以上本申请实施例提供的技术方案可见,与现有技术相比,本申请实施例可以通过计算机直接获取预设数据中按序排列的字段属性,以及目标数据表中按序排列的字段属性。通过将预设数据中按序排列的字段属性与目标数据表中按序排列的字段属性进行对比,可以快速检测目标数据表中字段的顺序与预设数据中字段的顺序是否一致,从而提高了检测的效率。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例一种字段顺序一致性检测方法的流程图;图2为本申请实施例第二SQL语句中查询语句的语法树示意图;图3为本申请实施例对于预设数据中与目标数据表中不相同的字段,从目标数据表中获取与其最相似的字段的方法的流程图;图4为本申请实施例一种字段顺序一致性检测装置的功能结构示意图。具体实施方式本申请实施例提供一种字段顺序一致性检测方法和装置。在本申请的说明书中:字段一般指数据表中的列。在数据表中,每一列一般称为一个字段。为了使本
技术领域
:的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。上述字段顺序不一致的问题通常出现在对数据表进行ETL(Extract/Transform/Load,抽取/转换/装载)的过程中。ETL通常是通过预设规则,将分布的、异构数据源中的数据,如关系数据和平面数据等,抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。在对数据表进行ETL操作的过程中,由于工程师的失误,或者工程师对字段的名称理解有误,有可能使ETL处理后的数据中的字段顺序与目标数据表真实 的字段顺序不一致。这样,当将处理后的数据保存至目标数据表后,目标数据表的数据会产生混乱。例如,对于如下的第一SQL(StructuredQueryLanguage,结构化查询语言)语句:其语义为从数据表a的col2、col3、cat_level2、cat_level1和initiative_id字段中获取数据,然后将获取的数据以col2、col3、cat_level2、cat_level1和initiative_id的字段顺序保存至目标数据表result_table中。但是,目标数据表result_table的真实字段顺序可能为col2、col3、cat_level1、cat_level2和initiative_id。这样,上述第一SQL语句对应的预设数据中的字段顺序与目标数据表result_table中的字段顺序不一致。那么,在执行上述第一SQL语句后,可以将数据表a的cat_level2字段中的数据保存至目标数据表result_table的cat_level1字段中,同时将数据表a的cat_level1字段中的数据保存至目标数据表result_table的cat_level2字段中,从而使目标数据表中的数据产生混乱。本申请实施例提供一种字段顺序一致性检测方法和装置,可以目标数据表中字段的顺序与预设数据中字段的顺序是否一致。下面介绍所述方法的一个实施例。如图1所示,该实施例可以包括:S101:获取目标数据表中第一顺序的字段属性。本实施方式中,一些情况下,可能需要将获取的数据保存至数据表中。那么,所述目标数据表可以包括保存获取的数据的数据表。例如,可以从原数据表中获取数据,然后将获取的数据保存至目标数据表中,或者,对从原数据表中获取的数据进行处理,将处理后的数据保存至目标数据表中。本实施方式中,步骤S101所述的字段属性可以包括字段名称和数据类型。目标数据表一般可以包括1个或多个字段,其中,每个字段可以具有名称和数据类型。本实施方式中,目标数据表中每个字段的数据类型通常为目标数据表所具有的字段数据类型种类中的一种。一般地,数据表所具有的字段数据类型种类一般与数据表所属的数据管理系统相对应。相同的数据管理系统,数据表所具有的字段数据类型种类一般是相同的。不同的数据管理系统,数据表所具有的字段数据类型种类可以相同,也可以不同。例如,当数 据管理系统为MicrosoftAccess时,数据表所具有的字段数据类型种类可以包括整型(Integer)、长整型(Long)、单精度浮点型(Single)、双精度浮点型(Double)和货币类型(Currency)等。那么,该数据表中每个字段的数据类型可以包括以上字段数据类型种类中的一种。本实施方式中,目标数据表中每个字段的名称可以包括第一名称。所述第一名称可以包括从第一元数据信息(meta信息)中获取的字段名称。其中,所述第一元数据信息为目标数据表的元数据信息。数据表的元数据信息一般在建立数据表时,由数据表所属的数据管理系统生成,用于管理数据表的属性信息。在另一个实施方式中,目标数据表中部分或全部字段的名称还可以包括第三名称。具体地,为了使用方便,用户可以对目标数据表中的一些或全部字段的第一名称进行重新定义。那么,可以将重新定义的名称作为与该字段的第一名称对应的第三名称。第三名称的数量可以是1个,也可以是多个。一般地,字段的第三名称与第一名称之间具有对应的关系。那么,对于每个字段的第一名称,可以获取用户输入的与该第一名称对应的第三名称,或者,可以从配置文件中读取与该第一名称对应的第三名称。例如,对于字段的第一名称id,可以将id重新定义为uid、userid和user_id。那么,可以将名称uid、userid和user_id作为与第一名称id对应的第三名称。本实施方式中,一般地,数据表的元数据信息(meta信息)中定义了数据表的基本属性信息,具体可以包括数据表字段的名称、数据表字段的数据类型和数据表字段的顺序等信息。那么,可以根据第一元数据信息,获取目标数据表字段的顺序、字段的名称和字段的数据类型,然后可以将所述字段的顺序作为第一顺序,并根据所述第一顺序,分别对字段的数据类型和名称进行排序,得到按序排列的字段的名称和数据类型,然后可以将按序排列的字段名称作为第一顺序字段名称,将按序排列的字段数据类型作为第一顺序数据类型。其中,一般可以通过数据管理系统提供的查询语句或函数获取数据表元数据信息中的字段顺序、字段名称和字段数据类型。例如,一些情况下,目标数据表table_name的元数据信息可以如下面的表1所示。表1那么,可以通过查询语句showtypefromtable_name,可以获取目标数据表table_name中的字段数据类型。本实施方式中,第一元数据信息中的字段名称一般为第一名称。因此,上述基于第一元数据信息得到的第一顺序字段名称可以包括第一名称。在一个实施方式中,目标数据表中部分或全部字段的名称还可以包括第三名称。具体地,对于第一顺序字段名称中的每个第一名称,可以获取与该第一名称对应的第三名称。S102:获取预设数据中第二顺序的字段属性。本实施方式中,所述预设数据可以包括从原数据表获取并按照预设规则处理后的数据。其中,所述原数据表的数量可以为1个,也可以为多个。所述预设规则可以包括对从原数据表获取的数据进行处理的规则。具体地,可以从原数据表中获取数据,然后使用计算机语句按照预设规则处理获取的数据,并将处理后的数据保存至目标数据表中。其中,所述计算机语句可以包括SQL语句(例如,mysql、SQLServer、Oracle、DB2、Sybase等数据库的SQL语句)、基于Hadoop或其它分布式平台的大数据仓库工具hive及odps对应的语句。所述原数据表可以包括向目标数据表提供数据的数据表。例如,可以将ETL过程中计算机语句对应的规则作为预设规则,将ETL处理后的数据作为预设数据。进一步地,所述预设规则可以包括根据计算机语句生成的语法树。相应地,所述预设数据可以包括计算机语句生成的语法树所对应的数据。一般地,根据计算机语句生成语法树的过程可以为:获取计算机语句;将所述计算机语句按照语法结构词进行拆分处理,获得语法节点;然后根据所述语法结构词,可以将拆分后的语法节点组装为语法树。其中,所述语法结构词可以包括计算机语言中的关键字等。例如,对于如下的第二SQL语句:其语法树可以如图2所示。本实施方式中,步骤S102所述的字段属性可以包括字段名称和数据类型。一般地,预设数据中可以包括1个或多个字段的数据,其中,每个字段可以具有名称和数据类型。在一个实施方式中,预设数据可以来自于1个或多个原数据表。那么,可以从一个或多个原数据表中获取预设数据中字段的数据类型。具体地,可以将字段在原数据表中的数据类型作为该字段在预设数据中的数据类型。在另一个实施方式中,预设规则可以包括用于处理从原数据表中获取的数据的函数。那么,可以将函数值的数据类型作为预设数据中与该数据对应字段的数据类型。例如,预设规则中可以包括SQL语句selectsubstr(col)asid,那么,可以将substr函数值的数据类型string作为预设数据中id字段的数据类型。本实施方式中,预设数据中每个字段的名称可以包括第二名称。所述第二名称可以包括预设规则中处理从原数据表获取的数据时使用的名称。进一步地,当使用计算机语句按照预设规则处理从原数据表获取的数据时,所述第二名称可以包括计算机语句中使用的字段名称。例如,对于第二SQL语句,tab_comment、nickname和project为处理从原数据表获取的数据时使用的名称,那么,可以将tab_comment、nickname和project作为第二名称。又如,对于图2所示的与第二SQL语句对应的语法树,可以将关键字“TOK_TABLE_OR_COL”对应的字段名称作为第二名称。更进一步地,所述第二名称还可以包括计算机语句中外层预设关键字对应的名称。其中,所述预设关键字可以包括“select”。具体地,在计算机语句中,可以将每一预设关键字作为一层预设关键字,该预设关键字对应的计算机语句可以作为该层预设关键字对应的计算机语句。一般地,在每一层预设关键字对应的计算机语句中,还可以进一步包括一个或多个预设关键字。那么,对于该层预设关键字对应的计算机语句,可以将该层关键字作为外层关键字,将该层预设关键字对应的计算机语句中的预设关键字作为内层关键字。在另一个实施例中,预设数据中部分或全部字段的名称还可以包括第四名称。具体地,为了使用方便,用户还可以对预设数据中的一些或全部字段的第二名称进行重新定义。那么,可以将重新定义的名称作为与该字段的第二名称对应的第四名称。第四名称的数量可以是1 个,也可以是多个。一般地,字段的第四名称与第二名称之间具有对应的关系。那么,可以获取与计算机语句对应的预设规则,然后对于每个字段的第二名称,可以根据该预设规则获取与该第二名称对应的第四名称。例如,上述的第二SQL语句,将第二名称tab_comment重新定义为col5,将第二名称nickname重新定义为col6。那么,可以将名称col5和col6分别作为与第二名称tab_comment和nickname对应的第四名称。又如,对于图2所示的语法树,可以将关键字“TOK_SELEXPR”右子节点对应的字段名称col5和col6作为第四名称,其中,col5与tab_comment相对应,col6与nickname相对应。本实施方式中,在预设规则中,一般按照顺序对待保存至目标数据表的数据进行处理,并将处理后的数据保存至目标数据表中。那么,可以将预设规则中字段的顺序作为第二顺序。通过与预设规则对应的计算机语句或语法树,可以获取所述第二顺序,并根据所述第二顺序,可以对预设数据中字段的数据类型和名称进行排序,得到按序排列的字段的名称和数据类型,然后可以将按序排列的字段名称作为预设数据中第二顺序字段名称,将按序排列的字段数据类型作为预设数据中第二顺序数据类型。本实施方式中,预设数据中字段的名称可以包括第二名称。那么,相应地,第二顺序的字段名称可以包括第二名称。例如,对于上述第二SQL语句,第二顺序的字段名称可以为tab_commen、nickname和project。在一个实施方式中,预设数据中部分或全部字段的名称还可以包括第四名称。那么,相应地,所述第二顺序的字段名称还可以包括第四名称。具体地,对于第二顺序字段名称中的每个第二名称,可以获取与该第二名称对应的第四名称。例如,对于上述第二SQL语句,第二顺序的字段名称可以为tab_commen(col5)、nickname(col6)和project。其中,tab_commen、nickname和project为第二名称,col5和col6为第四名称,col5与tab_comment相对应,col6与nickname相对应。S103:基于所述第一顺序的字段属性和所述第二顺序的字段属性,判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。本实施方式中,当所述第一顺序的字段属性和所述第二顺序的字段属性相同时,可以判断目标数据表中字段的顺序与预设数据中字段的顺序一致。具体地,当第一顺序中的每个字段属性和第二顺序中相应地字段属性相同时,可以判断目标数据表中字段的顺序与预设数据中字段的顺序一致。本实施方式中,当所述第一顺序的字段属性和所述第二顺序的字段属性不相同时,可以判断目标数据表中字段的顺序与预设数据中字段的顺序不一致。具体地,当第一顺序中包括与第二顺序中相应地字段属性不相同的字段属性时,可以判断判断目标数据表中字段的顺序 与预设数据中字段的顺序一致。其中,第一顺序中与第二顺序中对应字段属性不相同的字段属性的数量可以是1个,也可以是多个。需要说明的是,尽管在图1中采用箭头表示顺序,但仅作为示例,实际上步骤S101与S102之间并没有严格的先后顺序。依赖于硬件的处理能力,这二者也可以并行处理。图1所对应的实施例,与现有技术相比,可以通过计算机直接获取预设数据中按序排列的字段属性,以及目标数据表中按序排列的字段属性。通过将预设数据中按序排列的字段属性与目标数据表中按序排列的字段属性进行对比,可以快速检测目标数据表中字段的顺序与预设数据中字段的顺序是否一致,从而提高了检测的效率。在一个实施方式中,步骤S101和步骤S102中的字段属性可以包括字段名称。那么,在步骤S103中,可以基于所述第一顺序的字段名称和所述第二顺序的字段名称,判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。本实施方式中,当所述第一顺序的字段名称和所述第二顺序的字段名称相同时,可以判断目标数据表中字段的顺序与预设数据中字段的顺序一致。具体地,当第一顺序中的每个字段名称和第二顺序中相对应的字段名称均相同时,可以判断目标数据表中字段的顺序与预设数据中字段的顺序一致。本实施方式中,当所述第一顺序的字段名称和所述第二顺序的字段名称不相同时,可以判断目标数据表中字段的顺序与预设数据中字段的顺序不一致。具体地,当第一顺序中包括与第二顺序中相对应的字段名称不相同的字段名称时,可以判断判断目标数据表中字段的顺序与预设数据中字段的顺序不一致。其中,第一顺序中与第二顺序中相对应的字段名称不相同的字段名称的数量可以是1个,也可以是多个。进一步地,可以根据所述第一顺序的字段名称,确定用于判断的目标候选名称,以及根据所述第二顺序的字段名称,确定用于判断的预设候选名称。然后根据所述目标候选名称与所述预设候选名称,判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。在一个实施方式中,所述第一顺序的字段名称可以包括,根据第一元数据信息获取的第一名称,其中,所述第一元数据信息包括目标数据表的元数据信息。那么,所述目标候选名称可以采用所述第一名称。进一步地,所述第一顺序的字段名称还可以包括,根据所述第一名称获取的第三名称。那么,所述目标候选名称可以采用所述第一名称和所述第三名称。在另一个实施方式中,所述预设数据可以包括从原数据表获取的并按照预设规则处理后的数据。所述第二顺序的字段名称可以包括,预设规则中处理从原数据表获取的数据时使用 的名称。那么,所述预设候选名称可以采用所述第二名称。进一步地,所述第二顺序的字段名称还可以包括,根据所述第二名称获取的第四名称。那么,所述预设候选名称还可以采用所述第二名称和所述第四名称。在一个具体应用场景中,可以根据第一顺序的第一名称与和所述第二顺序的第二名称,判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。具体地,可以将第一顺序中的每个第一名称与第二顺序中相对应的第二名称进行对比,根据对比结果判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。例如,第一顺序的第一名称可以包括姓名、年龄和班级。第二顺序的第一名称可以包括姓名、班级和年龄。那么,可以将第一顺序的姓名和第二顺序的姓名进行对比,将第一顺序的年龄与第二顺序的班级进行对比,将第一顺序的班级与第二顺序的年龄进行对比。由于第一顺序的年龄与第二顺序的班级不相同,同时第一顺序的班级与第二顺序的年龄不相同,因此可以判断目标数据表中字段的顺序与预设数据中字段的顺序不一致。在另一个具体应用场景中,可以根据第一顺序的第一名称与和第二顺序中的字段名称,判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。所述第二顺序中的字段名称可以包括第二名称和第四名称。具体地,对于第一顺序中的每个第一名称,可以从第二顺序中获取第二名称,以及与该第一名称对应的第四名称。当获取到第四名称时,可以将该第一名称分别与第二名称和第四名称进行对比。当该第一名称与第四名称或第二名称相同时,可以判断该第一名称与第二顺序中相对应的字段名称相同。当该第一名称与第二名称和第四名称均不相同时,可以判断该第一名称与第二顺序中相对应的字段名称不相同。当获取不到第四名称时,可以将该第一名称与第二名称进行对比。当该第一名称与第二名称相同时,可以判断该第一名称与第二顺序中相对应的字段名称相同。当该第一名称与第二名称不相同时,可以判断该第一名称与第二顺序中相对应的字段名称不相同。在将第一顺序中的每个第一名称均对比完成后,当第一顺序中包括与第二顺序中对应的字段名称不相同的第一名称时,可以判断判断目标数据表中字段的顺序与预设数据中字段的顺序不一致;当第一顺序中的每个第一名称与第二顺序中对应的字段名称均相同时,可以判断判断目标数据表中字段的顺序与预设数据中字段的顺序一致。例如,第一顺序的第一名称可以包括姓名、年龄和班级。第二顺序的第二名称可以包括名字、班级和年龄,其中,名字的第四名称为姓名,班级的第四名称为年级。那么,对于第一顺序中的姓名,可以从第二顺序中获取名字和姓名,并第一顺序中的姓名分别与第二顺序中的名字和姓名进行对比。对于第一顺序中的年龄,可以从第二顺序中获取年级,并将二者进行对比。对于第一顺序中的班级,可以从第二顺序中获取班级和年级,并将第一顺序中的班级分别与第二顺序中的班级和年级进行对比。在另一个具体应用场景中,可以根据第一顺序的字段名称与和第二顺序的第二名称,判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。所述第一顺序的字段名称可以包括第一名称和第三名称。具体地,对于第一顺序中的每个字段名称,可以获取该字段名称的第一名称,以及与该第一名称对应的第三名称。当获取到第三名称时,可以从第二顺序中获取与该字段名称对应的第二名称,并将该字段名称的第一名称和第三名称分别与第二名称进行对比。当该字段名称的第一名称或第三名称与第二名称相同时,可以判断该字段名称与第二顺序中相对应的第二名称相同。当该字段名称的第一名称和第三名称与第二名称均不相同时,可以判断该字段名称与第二顺序中相对应的第二名称不相同。当获取不到第三名称时,可以从第二顺序中获取与该字段名称对应的第二名称,并将该字段名称的第一名称和第二名称进行对比。当该字段名称的第一名称与第二名称相同时,可以判断该字段名称与第二顺序中相对应的第二名称相同。当该字段名称的第一名称与第二名称不相同时,可以判断该字段名称与第二顺序中相对应的第二名称不相同。在将第一顺序的每个字段名称均对比完成后,当第一顺序中包括与第二顺序中对应的第二名称不相同的字段名称时,可以判断判断目标数据表中字段的顺序与预设数据中字段的顺序不一致;当第一顺序的每个字段名称与第二顺序中对应的第二名称均相同时,可以判断判断目标数据表中字段的顺序与预设数据中字段的顺序一致。在另一个实施方式中,步骤S101和步骤S102中的字段属性可以包括字段名称。那么,在步骤S103中,可以计算第一顺序的字段名称与第二顺序中相对应的字段名称的相似度值,并根据所述相似度值判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。具体地,对于第一顺序中的每个字段名称,可以计算该字段名称与第二顺序中对应的字段名称的相似度值,并将该相似度值与预设阈值进行对比。当该相似度值大于或等于预设阈值时,可以判断该字段名称与第二顺序中对应的字段名称相同,当该相似度值小于预设阈值时,可以判断该字段名称与第二顺序中对应的字段名称不相同。在将第一顺序中的每个字段名称均对比完成后,当第一顺序中包括与第二顺序中对应字段名称不相同的字段名称时,可以判断判断目标数据表中字段的顺序与预设数据中字段的顺序不一致,当第一顺序中的每个字段名称与第二顺序中对应的字段名称均相同时,可以判断判断目标数据表中字段的顺序与预设数据中字段的顺序一致。其中,可以采用lcs(LongestCommonSubsequence,最长公共子序列)、编辑距离(EditDistance)、余弦相似度等算法计算待处理数据中字段的名称与目标数据表中对应字段的名称的相似度。所述预设阈值的大小可以根据实际的需要灵活设定,例如可以设置为1。所述第一顺序中的字段名称可以包括第一名称和第三名称,所述第二顺序中的字段名称可以包括第二名称和第四名称。例如,可以计算第一顺序中的第三名称与第二顺序中对 应的第二名称的相似度值,通过该相似度值判断第一顺序中的第三名称与第二顺序中对应的第二名称是否相同。又如,可以计算第一顺序中的第一名称与第二顺序中对应的第二名称的相似度值,通过该相似度值判断第一顺序中的第一名称与第二顺序中对应的第二名称是否相同。又如,可以计算第一顺序中的第一名称与第二顺序中对应的第四名称的相似度值,通过该相似度值判断第一顺序中的第一名称与第二顺序中对应的第四名称是否相同。在另一个实施方式中,在步骤S103中,基于所述第一顺序的字段名称和所述第二顺序的字段名称,判断目标数据表中字段的顺序与预设数据中字段的顺序不一致。那么,在步骤S103之后,如图3所示,所述方法还可以包括如下的步骤:S301:从第一顺序的字段名称中获取与第二顺序中相对应的字段名称不相同的字段名称,将获取的字段名称组成的集合作为第一字段名称集合;S302:从第二顺序的字段名称中获取与第一顺序中相对应的字段名称不相同的字段名称,将获取的字段名称组成的集合作为第二字段名称集合;S303:对于第二字段名称集合中的每个字段名称,分别计算该字段名称与第一字段名称集合中每个字段名称的相似度值,从第一字段名称集合中选取与该字段名称的相似度值最大的字段名称。在本实施方式中,在步骤S301中,可以从第一顺序中获取与第二顺序中相对应的字段名称的相似度值小于预设阈值的字段名称,将获取的字段名称组成的集合作为第一字段名称集合。或者,可以从第一顺序中剔除与第二顺序中相对应的字段名称相同的字段名称,将剩余的字段名称组成的集合作为第一字段名称集合。又或者,可以从第一顺序中剔除与第二顺序中相对应的字段名称的相似度值大于或等于预设阈值的字段名称,将剩余的字段名称组成的集合作为第一字段名称集合。在本实施方式中,在步骤S302中,可以从第二顺序中获取与第一顺序中相对应的字段名称的相似度值小于预设阈值的字段名称,将获取的字段名称组成的集合作为第二字段名称集合。或者,可以从第二顺序中剔除与第一顺序中相对应的字段名称相同的字段名称,将剩余的字段名称组成的集合作为第二字段名称集合。又或者,可以从第二顺序中剔除与第一顺序中相对应的字段名称的相似度值大于或等于预设阈值的字段名称,将剩余的字段名称组成的集合作为第二字段名称集合。在本实施方式中,在步骤S303中,对于第二字段名称集合中的每个字段名称,可以分别计算该字段名称与第一字段名称集合中每个字段名称的相似度值,并从第一字段名称集合中选取与该字段名称的相似度值最大的字段名称,其中,所述相似度值最大的字段名称可以是与该字段名称对应的字段名称,也可以是与该字段名称不相对应的字段名称。然后将选取的 字段名称作为该字段名称在第一字段名称集合中最相似的字段名称。所述最相似的字段名称可以为第一字段名称集合中字段名称的第一名称,也可以为字段名称的第三名称。由此,可以在判断预设数据中字段的顺序与目标数据表中字段的顺序不一致时,获取预设数据中与目标数据表中不相同的字段,从而可以向用户返回目标数据表中与所述不相同的字段最相似的字段,减少了用户查找的时间。在另一个实施方式中,步骤S101和步骤S102中的字段属性可以包括字段的数据类型。那么,在步骤S103中,可以基于所述第一顺序的数据类型和所述第二顺序的数据类型,判断目标数据表中字段的顺序与预设数据中字段的顺序不一致。本实施方式中,一般地,当两个或两个以上字段的数据类型不相同并且无法相互转换时,可以判断该两个或两个以上字段是不相同的字段。因此,当所述第一顺序的数据类型和所述第二顺序的数据类型不相同并且无法相互转换时,可以判断目标数据表中字段的顺序与预设数据中字段的顺序不一致。具体地,可以将第一顺序中的每个数据类型与第二顺序中对应的数据类型进行对比,当第一顺序包括与第二顺序中相对应的数据类型不相同并且无法相互转换的数据类型时,可以判断判断目标数据表中字段的顺序与预设数据中字段的顺序不一致。其中,与第二顺序中相对应的数据类型不相同并且无法相互转换的数据类型的数量可以是1个,也可以是多个。两个或两个以上字段的数据类型可以相互转换一般为,两个或两个以上字段的数据类型可以通过函数进行相互转换。两个或两个以上字段的数据类型无法相互转换一般为,两个或两个以上字段的数据类型无法通过函数进行相互转换。例如,在SQL计算机语言中,string数据类型中的“1”可以通过函数转换为bigint数据类型中的“1”,那么,bigint数据类型可以与double数据类型相互转换。又如,Boolean数据类型一般无法通过函数与double数据类型相互转换,那么,Boolean数据类型与double数据类型无法相互转换。所述转换可以包括隐式转换。其中,所述隐式转换一般为不需要用户干预、在计算机语言内部进行的类型转换行为。例如,对于计算机语言a+b,a是bigint数据类型,b是double数据类型。在做加运算时,计算机语言可以将a由bigint数据类型隐式转换为double数据类型后,再与b相加。在另一个实施方式中,在步骤S101中,所述第一顺序的字段属性可以包括字段名称和数据类型。在步骤S102中,所述第二顺序的字段属性可以包括字段名称和数据类型。那么,在步骤S103中,可以将第一顺序的数据类型与第二顺序的数据类型进行对比。在所述第一顺序的数据类型与所述第二顺序的数据类型相同或者可以相互转换时,可以基于所述第一顺序的字段名称和所述第二顺序的字段名称,判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。在本实施方式中,一般地,当两个或两个以上字段的数据类型不相同并且无法相互转换 时,可以判断该两个或两个以上字段是不相同的字段。但是,当两个或两个以上字段的数据类型相同或者可以相互转换时,该两个或两个以上字段有可能是不相同的字段,也有可能是相同的字段。因此,当第一顺序中每个字段的数据类型与第二顺序中对应字段的数据类型相同或者可以相互转换时,可以基于所述第一顺序的字段名称和所述第二顺序的字段名称,判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。如此,本实施方式可以从数据类型和字段名称两个维度上,判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致,从而可以提高判断的准确性。在一个具体应用场景中,在步骤S103中,可以将第一顺序的数据类型与第二顺序的数据类型进行对比。当第一顺序中包括与第二顺序中相对应的数据类型不相同并且无法相互转换的数据类型时,可以判断目标数据表中字段的顺序与预设数据中字段的顺序不一致。当第一顺序中的每个数据类型和第二顺序中相对应的数据类型相同时,可以基于所述第一顺序的字段名称和所述第二顺序的字段名称,判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。当第一顺序中的每个字段名称和第二顺序中相对应的字段名称相同时,可以判断目标数据表中字段的顺序与预设数据中字段的顺序一致。当第一顺序中包括与第二顺序中相对应的字段名称不相同的字段名称时,可以判断判断目标数据表中字段的顺序与预设数据中字段的顺序不一致。其中,可以采用相似度的方法判断第一顺序中的字段名称和第二顺序中相对应的字段名称是否相同。具体地,对于第一顺序中的每个字段名称,可以计算该字段名称与第二顺序中对应的字段名称的相似度值,并将该相似度值与预设阈值进行对比。当该相似度值大于或等于预设阈值时,可以判断该字段名称与第二顺序中对应的字段名称相同,当该相似度值小于预设阈值时,可以判断该字段名称与第二顺序中对应的字段名称不相同。本申请实施例还提供一种字段顺序一致性检测装置。如图4所示,该装置可以包括第一获取模块401、第二获取模块402和判断模块403。其中,第一获取模块401,用于获取目标数据表中第一顺序的字段属性;第二获取模块402,用于获取预设数据中第二顺序的字段属性;判断模块403,用于基于所述第一顺序的字段属性和所述第二顺序的字段属性,判断目标数据表中字段的顺序与预设数据中字段的顺序是否一致。所述字段属性可以包括:字段名称和/或字段类型。在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计 人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(ProgrammableLogicDevice,PLD)(例如现场可编程门阵列(FieldProgrammableGateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(HardwareDescriptionLanguage,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(AdvancedBooleanExpressionLanguage)、AHDL(AlteraHardwareDescriptionLanguage)、Confluence、CUPL(CornellUniversityProgrammingLanguage)、HDCal、JHDL(JavaHardwareDescriptionLanguage)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardwareDescriptionLanguage)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、AtmelAT91SAM、MicrochipPIC18F26K20以及SiliconeLabsC8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请 时可以把各单元的功能在同一个或多个软件和/或硬件中实现。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1