CN105094843B - 一种数据表的检查方法及装置 - Google Patents
一种数据表的检查方法及装置 Download PDFInfo
- Publication number
- CN105094843B CN105094843B CN201510515328.1A CN201510515328A CN105094843B CN 105094843 B CN105094843 B CN 105094843B CN 201510515328 A CN201510515328 A CN 201510515328A CN 105094843 B CN105094843 B CN 105094843B
- Authority
- CN
- China
- Prior art keywords
- data
- tables
- rule
- combination
- major key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据表的检查方法及装置。所述数据表的检查方法包括:获取数据表的组合规则;将所述组合规则拆分为N个单一规则;N≥1;每个单一规则包括一个零件规则;逐一从预先配置的零件规则库中调用每个单一规则中的零件规则所对应的函数;通过所述零件规则的函数对所述数据表中的数据进行检查。采用本发明实施例,能够提高数据表的检查效率和准确性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据表的检查方法及装置。
背景技术
当今网络游戏的设计,无论手机游戏、PC游戏、单机游戏或者联网游戏,都需要一个严谨的数值系统,来保证游戏的公平性,好玩性,以及耐玩度。在游戏数值的设计上,一般流程是经过游戏策划人员填写数值配置表,再导入到程序中来实现游戏系统的操控。其中,各游戏配置表的格式不尽相同,常用的载体有EXCEL,CSV,XML,或者是数据库MYSQL等格式。
一般,游戏策划人员对每个配置表的每个表头(列名)的定义,都有自己的想法,配置表在导入到游戏中后结果都各有不同。由于游戏策划人员不可能记住所有表头的含义,成千上万个表头的使用就容易出现混乱。
另外,每个表头中数据的填写规则各不相同,例如有类型限制,有长度限制,有范围限制等。而且,各个表头之间的数据也互相制约,甚至多张表之间也存在规则。一般可分成两种性质的规则:
1.显性规则。把游戏策划人员配置的数据成功转换到游戏中,需要设定每个表头中输入数据的基本规则。基本规则一般有设置表头中的数据类型,如整数(INT)、浮点数(FLOAT)、字符串(STRING)等,其表示该表头中只能填入相应数据类型的数据,如果填入其他类型则为错误;设置表头中的数据性质,如唯一性、重复性,其表示该表头中的整一列数据不能重复,甚至是与其他表头中的数据也不能够重复,以保证绝对的唯一性;设置表头中的数据格式,如用分号、逗号等分隔号将数据分割成的列表格式,使数据填写必须严格按照分隔号的格式来填写,否则会出错。
2.隐性规则。隐性规则是为了使游戏策划人员配置的数据能够在游戏中符合常规逻辑运行。隐性规则一般为设置不同表头中数据的关联性,例如,某一个表头中数据的配置属性必须与另一个表头中数据相一致;设置数值范围,如表头中数据的输入范围必须在0-100之间,一个表头中的数据不能大于另一表头中的数据等。
现有技术中,对配置表中数据的规则进行设定的方法都较简单。例如,游戏策划人员之间直接对规则进行约定,如在excel表格的表头设置标签以表明规则,或者只是口头相传。但是,这种方法设定的规则往往会被游戏策划人员忘记,导致配置表的检查效率非常低。另外,还可通过编写代码来制定配置表的规则。但是,这种方法制定的规则难于理解,不易维护,且检查效率低。
发明内容
本发明实施例提出一种数据表的检查方法及装置,能够提高数据表的检查效率和准确性。
本发明实施例提供一种数据表的检查方法,包括:
获取数据表的组合规则;
将所述组合规则拆分为N个单一规则;N≥1;每个单一规则包括一个零件规则;
逐一从预先配置的零件规则库中调用每个单一规则中的零件规则所对应的函数;
通过所述零件规则的函数对所述数据表中的数据进行检查。
进一步地,所述获取数据表的组合规则,具体包括:
在定时器达到预设的检查时间时或在检测到数据表中的数据更新时,获取所述数据表的组合规则。
进一步地,所述每个单一规则还包括所述数据表中的待检查列名;
所述通过所述零件规则的函数对所述数据表中的数据进行检查,具体包括:
从预先建立的通用数据库中逐一读取所述数据表中每个主键及其相应的列名数据;所述主键为数据表中每一行数据的唯一识别码;所述列名数据为每个列名及其相应的数据;
逐一判断每个主键是否为预设的待检查主键;
若是,则通过所述零件规则的函数对所述主键中的所述待检查列名的数据进行检查;
若否,则丢弃所述主键及其相应的列名数据。
进一步地,在所述获取数据表的组合规则之前,还包括:
获取数据源表,所述数据源表为所述数据表的原始版本;所述数据源表为EXCEL格式、CSV格式、XML格式或数据库MYSQL格式的配置表;
识别出所述数据源表中待读取数据所在的行数;
为识别出的每一行待读取数据配置主键;所述主键为数据表中每一行数据的唯一识别码;
提取所有待读取数据;
将所有待读取数据的数据格式转换为字符串格式;
将每个主键和每行列名数据一一对应地保存在所述通用数据库中;所述列名数据为每个列名及其相应的字符串格式的待读取数据。
进一步地,在所述获取数据表的组合规则之前,还包括:
配置所述零件规则库;
根据所述数据表,从所述零件规则库中选取零件规则,配置所述数据表的组合规则。
进一步地,所述配置所述零件规则库,具体包括:
获取各种数据表所需的规则;
采用结巴分词,对获取的规则进行分词,获得规则词语;
查询预先建立的词库,对所述规则词语进行过滤,获得所述规则词语中的关键词;
统计每个关键词的使用频率,并对所有关键词进行分类;
提取每个类型中使用频率高于预设阈值的关键词,并将提取的关键词设为零件规则;
将所有零件规则所对应的函数封装在零件规则库中。
进一步地,所述根据所述数据表,从所述零件规则库中选取零件规则,配置所述数据表的组合规则,具体包括:
根据所述数据表,选取所述零件规则库中的零件规则;
根据所述数据表的列名和选取的零件规则,配置单一规则;
将不同的单一规则进行组合,配置成所述数据表的组合规则。
进一步地,在所述通过所述零件规则的函数对所述数据表中的数据进行检查之后,还包括:
将检查结果保存在表格中,并将所述表格发送给预先设置的邮箱。
进一步地,所述零件规则库中还封装有特殊规则的函数;
所述数据表检查方法还包括:
当获取的所述数据表的规则不能被拆分为单一规则时,从所述零件规则库中调用所述特殊规则的函数对所述数据表中的数据进行检查。
进一步地,所述数据表为配置游戏属性的数据表。
相应的,本发明实施例还提供一种数据表的检查装置,包括:
组合规则获取模块,用于获取数据表的组合规则;
拆分模块,用于将所述组合规则拆分为N个单一规则;N≥1;每个单一规则包括一个零件规则;
调用模块,用于逐一从预先配置的零件规则库中调用每个单一规则中的零件规则所对应的函数;以及,
检查模块,用于通过所述零件规则的函数对所述数据表中的数据进行检查。
进一步地,所述组合规则获取模块具体用于在定时器达到预设的检查时间时或在检测到数据表中的数据更新时,获取所述数据表的组合规则。
进一步地,所述每个单一规则还包括所述数据表中的待检查列名;
所述检查模块具体包括:
数据读取单元,用于从预先建立的通用数据库中逐一读取所述数据表中每个主键及其相应的列名数据;所述主键为数据表中每一行数据的唯一识别码;所述列名数据为每个列名及其相应的数据;
判断单元,用于逐一判断每个主键是否为预设的待检查主键;
数据检查单元,用于在所述判断单元判定为是时,通过所述零件规则的函数对所述主键中的所述待检查列名的数据进行检查;以及,
数据丢弃单元,用于在所述判断单元判定为否时,丢弃所述主键及其相应的列名数据。
进一步地,所述数据表的检查装置还包括:
数据源表获取模块,用于获取数据源表,所述数据源表为所述数据表的原始版本;所述数据源表为EXCEL格式、CSV格式、XML格式或数据库MYSQL格式的配置表;
数据识别模块,用于识别出所述数据源表中待读取数据所在的行数;
主键配置模块,用于为识别出的每一行待读取数据配置主键;所述主键为数据表中每一行数据的唯一识别码;
数据提取模块,用于提取所有待读取数据;
数据格式转换模块,用于将所有待读取数据的数据格式转换为字符串格式;以及,
数据保存模块,用于将每个主键和每行列名数据一一对应地保存在所述通用数据库中;所述列名数据为每个列名及其相应的字符串格式的待读取数据。
进一步地,所述数据表的检查装置还包括:
零件规则库配置模块,用于配置所述零件规则库;以及,
组合规则配置模块,用于根据所述数据表,从所述零件规则库中选取零件规则,配置所述数据表的组合规则。
进一步地,所述零件规则库配置模块具体包括:
规则获取单元,用于获取各种数据表所需的规则;
分词单元,用于采用结巴分词,对获取的规则进行分词,获得规则词语;
过滤单元,用于查询预先建立的词库,对所述规则词语进行过滤,获得所述规则词语中的关键词;
统计单元,用于统计每个关键词的使用频率,并对所有关键词进行分类;
提取单元,用于提取每个类型中使用频率高于预设阈值的关键词,并将提取的关键词设为零件规则;以及,
封装单元,用于将所有零件规则所对应的函数封装在零件规则库中。
进一步地,所述组合规则配置模块具体包括:
零件规则选取单元,用于根据所述数据表,选取所述零件规则库中的零件规则;
单一规则配置单元,用于根据所述数据表的列名和选取的零件规则,配置单一规则;以及,
组合规则配置单元,用于将不同的单一规则进行组合,配置成所述数据表的组合规则。
进一步地,所述数据表的检查装置还包括:
检查结果保存模块,用于将检查结果保存在表格中,并将所述表格发送给预先设置的邮箱。
进一步地,所述零件规则库中还封装有特殊规则的函数;
所述数据表检查装置还包括:
特殊规则检查模块,用于当获取的所述数据表的规则不能被拆分为单一规则时,从所述零件规则库中调用所述特殊规则的函数对所述数据表中的数据进行检查。
进一步地,所述数据表为配置游戏属性的数据表。
实施本发明实施例,具有如下有益效果:
本发明实施例提供的数据表的检查方法及装置,能够在对数据表进行检查时,将数据表的组合规则拆分为具有一个零件规则的单一规则,再从零件规则库中直接调用每个零件规则所对应的函数对数据表进行检查,使数据表的规则无需通过编写代码来实现,从而提高数据表的检查效率和准确性;在配置数据表的组合规则时,直接选取零件规则进行组合即可,无需通过程序人员编写代码来实现,从而减少人力,节省时间,且方便维护;定时或在数据表更新时自动对数据表进行检查,并将检查结果发送给负责人邮箱,实现自动化检查和反馈,减少人力维护成本;将各种格式的数据源表中的数据统一转换为相同格式的数据进行保存,在对数据表进行检查时,直接读取保存的数据即可,从而适用于各种类型的数据表的检查,且提高数据的读取速度和处理效率。
附图说明
图1是本发明提供的数据表的检查方法的第一个实施例的流程示意图;
图2是本发明提供的数据表的检查方法中步骤S4的一个实施例的流程示意图;
图3是本发明提供的数据表的检查方法的第二个实施例的流程示意图;
图4是本发明提供的数据表的检查方法中配置零件规则库的一个实施例的流程示意图;
图5是本发明提供的数据表的检查方法中配置组合规则的一个实施例的流程示意图;
图6是本发明提供的数据表的检查装置的第一个实施例的结构示意图;
图7是本发明提供的数据表的检查装置中检查模块的一个实施例的结构示意图;
图8是本发明提供的数据表的检查装置的第二个实施例的部分结构示意图;
图9是本发明提供的数据表的检查装置中零件规则库配置模块的一个实施例的结构示意图;
图10是本发明提供的数据表的检查装置中组合规则配置模块的一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明提供的数据表的检查方法的一个实施例的流程示意图,包括:
S1、获取数据表的组合规则;
S2、将所述组合规则拆分为N个单一规则;N≥1;每个单一规则包括一个零件规则;
S3、逐一从预先配置的零件规则库中调用每个单一规则中的零件规则所对应的函数;
S4、通过所述零件规则的函数对所述数据表中的数据进行检查。
在对数据表进行检查时,先获取该数据表已配置好的所有组合规则,再将每个组合规则拆分为各个单一规则逐一对数据表进行检查。在根据每个单一规则进行检查时,直接从零件规则库中调用每个单一规则中的零件规则所对应的函数来对数据表进行检查,无需使用规则代码,从而提高数据表的检查效率和准确性。例如,数据表的一个组合规则为“如果任务类型等于1且组队限制为存在,则等级上限必须大于10”,可将组合规则拆分为三个单一规则。第一个单一规则为“如果任务类型等于1”,其零件规则为“等于?”;第二单一规则为“且如果组队限制为存在”,其零件规则为“是否存在”;第三个单一规则为“则等级上限必须大于10”,其零件规则为“大于?”。拆分后,分别从零件规则库中调用“等于?”、“是否存在”和“大于?”所对应的函数对数据表中相应的数据进行检查。
进一步地,所述获取数据表的组合规则,具体包括:
在定时器达到预设的检查时间时或在检测到数据表中的数据更新时,获取所述数据表的组合规则。
需要说明的是,可预先设置数据表的检查时间,根据检查时间设置定时器。然后,启动定时器,在定时器达到检查时间时,触发对数据表的自动检查。同时,数据表的自动检查也可通过事件来触发,在某一事件发生时,如数据表中的数据更新时,触发对数据表的自动检查。
进一步地,所述每个单一规则还包括所述数据表中的待检查列名。
如图2所示,所述通过所述零件规则的函数对所述数据表中的数据进行检查,具体包括:
S21、从预先建立的通用数据库中逐一读取所述数据表中每个主键及其相应的列名数据;所述主键为数据表中每一行数据的唯一识别码;所述列名数据为每个列名及其相应的数据;
S22、逐一判断每个主键是否为预设的待检查主键;若是,则执行步骤S23,若否,则执行步骤S24;
S23、通过所述零件规则的函数对所述主键中的所述待检查列名的数据进行检查;
S24、丢弃所述主键及其相应的列名数据。
需要说明的是,在对数据表进行检查之前,需要对该数据表进行简单的配置,可通过给数据表添加一张检查表来实现。检查人员在检查表中填入该数据表的名称和数据源,并说明是否为多表合一的数据表,以及是否需要与其他表合并。同时,还需填入该数据表的关键列名,待读取数据所在的行数,以及忽略列名。其中,关键列名为每行数据的主键所在的列名,填入关键列名后,即可在检查数据表的过程中识别出该数据表的主键。待读取数据所在的行数表明该数据表中待读取数据的起止行,填写待读取数据所在的行数后,即可在检查数据表的过程中直接忽略掉无需检查的行数。忽略列名为无需读取所填写列名中的数据,填写忽略列名后,即可在读取数据表中数据时直接忽略所填写列名中的一列数据。
在对数据表进行检查时,先根据检查表对该数据表进行过滤检查。在读取数据表中的每行数据时,根据填写的忽略列名从数据源处读取忽略列名以外的所有数据。再根据每行数据的主键检查其是否在待读取数据所在行数的范围内,若是,则根据规则对该行数据进行检查,若否,则直接丢弃该行数据。采用过滤检查可以选择性的对数据表中的数据进行检查,从而只需检查某个范围段的数据或忽略检查某个范围段的数据,以提高数据表的检查效率。
另外,在检查一行数据时,会调用数据表的所有规则对其进行检查,若需联表检查,会缓存联表数据。在该行数据检查完后,再读取下一行数据进行检查,直到该数据表所有数据检查完毕。在该数据表检查结束后,会判断该数据表是否还需要用到缓存的联表数据,若不需要,则清空联表数据,为下一个数据表的检查提供充足空间;若需要,则继续缓存联表数据,供检查过程中的重复利用,以提高检查效率。
参见图3所示,是本发明提供的数据表的检查方法的第二个实施例的流程示意图。
与上述第一实施例相比,第二实施例提供的数据表的检查方法的不同点在于:
在所述获取数据表的组合规则之前,还包括:
S31、获取数据源表,所述数据源表为所述数据表的原始版本;所述数据源表为EXCEL格式、CSV格式、XML格式或数据库MYSQL格式的配置表;
S32、识别出所述数据源表中待读取数据所在的行数;
S33、为识别出的每一行待读取数据配置主键;所述主键为数据表中每一行数据的唯一识别码;
S34、提取所有待读取数据;
S35、将所有待读取数据的数据格式转换为字符串格式;
S36、将每个主键和每行列名数据一一对应地保存在所述通用数据库中;所述列名数据为每个列名及其相应的字符串格式的待读取数据。
需要说明的是,本发明实施例提供的数据表的检查方法能够兼容所有格式的数据源表。由于游戏中各个游戏项目所使用的配置表各不相同,或是采取一种类型的多张配置表存储数据,或是采取多种类型的多张配置表存储,或是将一张配置表拆分成多个子表来存储,因而需将各种类型的数据源表中的数据统一处理成可进行规则检查的数据。
在接收到任何类型的数据源表后,先识别出待读取数据所在的行数,可根据检查表中设置的待读取数据所在的行数来识别。一般数据源表的第一行为表头,则从数据源表的第一行开始读取,但也不排除有的数据表第一行只是一个说明性数据,不为待读取数据,因此需识别出待读取数据的起始行。再对识别出的每行数据配置具有唯一性的主键,以区分每行数据。其中,主键可以是每行的行名,若没有行名,则将每行的行号作为该行的主键,若数据源表为多张子表合成的配置表,则在每行数据主键前增加每张子表的名称标识符,以保证每行数据主键的唯一性。
在配置主键后,提取并保存表头中的所有列名,并提取所有待读取数据。其中,待读取数据的提取需针对性的对每一种类型的数据源表进行处理和读取,以便对待读取数据进行格式转换。数据源表中可能存在某个数据是非字符型,如整型,浮点数,列表等等,需将待读取数据的各种数据格式统一转换成字符串格式。另外,在数据表检查时,可采用这种转换方法对读取的每行数据进行二次处理,以减少出错率,提高检查效率。
数据格式转换后,采用PYTHON(一种解释性脚本编程语言)的字典格式来对转换后的数据进行存储。将数据源表中识别出的每一行数据通过{KEY:VALUE}格式保存在通用数据库中。其中,KEY为每行数据的主键,VALUE为主键相应的列名数据。如表1所示,为一张数据源表,其中,第一行为表头,即列名,第一列任务编号为主键,则将该数据源表转换为data={10001:{任务编号:10001;任务类型:1;等级上限:10;完成任务数:0;组队限制:1;地点:地点1;杀怪:10},10002:{任务编号:10002;任务类型:2;等级上限:20;完成任务数:1;组队限制:1;地点:地点2;杀怪:20},10003:{任务编号:10003;任务类型:3;等级上限:10;完成任务数:2;组队限制:0;地点:地点3;杀怪:10}}的格式进行存储。采用这种存储方式使数据表中的数据读取方便、快捷、效率高。将转换后的数据保存在一个数据文件中,每个文件内容均为统一格式的字典,在检查数据表时,只需根据数据表的名称,即可调用获取该数据表相应的数据,从而提高数据读取速度和处理效率。
任务编号 | 任务类型 | 等级上限 | 完成任务数 | 组队限制 | 地点 | 杀怪 |
10001 | 1 | 10 | 0 | 1 | 地点1 | 10 |
10002 | 2 | 20 | 1 | 1 | 地点2 | 20 |
10003 | 3 | 10 | 2 | 0 | 地点3 | 10 |
表1
在对该数据表进行检查时,例如,该数据表的一个组合规则为“如果任务类型等于1且组队限制为存在,则等级上限必须大于10”,先从通用数据库中读取出主键为10001行数据10001:{任务编号:10001;任务类型:1;等级上限:10;完成任务数:0;组队限制:1;地点:地点1;杀怪:10},并对该主键中的任务类型的数据、组队限制的数据和等级上限的数据进行检查。在该行数据检查完后,继续对主键为10002行数据和主键为10003行数据进行检查。在该数据表检查完后,将不符合该组合规则的主键为10001行数据的错误信息进行反馈。
本发明还提供的数据表的检查方法的第三个实施例的流程示意图。
与上述第一实施例和第二实施例相比,第三实施例提供的数据表的检查方法的不同点在于:
在所述获取数据表的组合规则之前,还包括:
配置所述零件规则库;
根据所述数据表,从所述零件规则库中选取零件规则,配置所述数据表的组合规则。
其中,如图4所示,所述配置所述零件规则库,具体包括:
S41、获取各种数据表所需的规则;
S42、采用结巴分词,对获取的规则进行分词,获得规则词语;
S43、查询预先建立的词库,对所述规则词语进行过滤,获得所述规则词语中的关键词;
S44、统计每个关键词的使用频率,并对所有关键词进行分类;
S45、提取每个类型中使用频率高于预设阈值的关键词,并将提取的关键词设为零件规则;
S46、将所有零件规则所对应的函数封装在零件规则库中。
需要说明的是,零件规则库是对目前游戏项目中的普遍规则进行统计分析之后得到的结果。根据游戏策划人员的经验,先归纳总结出数据表所需的各种类型的规则,其中包括单表检查型,也包括跨表检查性。对归纳总结出的各种规则进行分词处理,一般采用结巴(JIEBA,一种拆分句子词组方法)分词的方法。分词后,按照建立的词库,对规则词语进行关键词提取。进而对关键词进行分类,并统计每个关键词的使用频率,使用频率越高则权重越大。提取每个类型中使用频率高的关键词即为零件规则,以保证提取到的零件规则具有独立性、唯一性和代表性。经过分析,零件规则主要的类型为存在性、比较型和跨表型。其中,存在型主要是对于数据格式的判断,例如,存在型零件规则为是否数据存在、是否数据是不为空、数据是否为0、数据是否等于多少等。比较型主要是列名与列名之间数据的判断,列名中的数据与某个数值的比较等。而跨表型则是适用于跨表格的数据检查,将多表联合起来进行检查。
通过对所有规则的拆分和提取,每个零件规则细化为一个最小的判断,通过最小的复杂度来实现。一般分为32个零件规则,表2为部分零件规则的列举。
表2
下面对部分零件规则进行说明:
“存在”:判断某主键中的某列名是否有内容存在
“等于?”:判断INT型或者FLOAT型数值的大小。
“等于列名”:判断联表主键中是否存在等于某列名的信息。
“包含列名”:判断某主键中某列名内容是否包含某列名的内容。
“包含于列名”:判断某主键中某列名内容是否包含于另一列名的内容中。
“大于且小于”:判断某主键中某列名内容是否大于某值且小于某值。其中包括大于最小无穷和小于最大无穷。
“大于或小于”:判断某主键中某列名内容是否大于某值或小于某值。其中包括大于最小无穷和小于最大无穷。
“加上列名大于?”:判断某主键中某列名内容加上其他列名内容后是否大于某值。
“关联主键”:判断该列名是否包含于联表的主键中。
“特殊规则”:系统自动读取特殊规则的程序块(特殊设定)处理规则。
形成零件规则后,对每个零件规则进行包装,处理为一个完整的函数,并将所有零件规则的函数统一存储到零件规则库中。将零件规则构建为黑盒子模块,并对黑盒子模块进行标准化处理,统一固定输入参数和输出结果的格式,例如,在返回参数上设置标志位来判断执行结果是否正确,并输出出错信息或传输结果。在调用零件规则库中的零件规则时,只需知道零件规则的名称和使用方式即可实现。
进一步地,如图5所示,所述根据所述数据表,从所述零件规则库中选取零件规则,配置所述数据表的组合规则,具体包括:
S51、根据所述数据表,选取所述零件规则库中的零件规则;
S52、根据所述数据表的列名和选取的零件规则,配置单一规则;
S53、将不同的单一规则进行组合,配置成所述数据表的组合规则。
需要说明的是,从零件规则库中选取所需的零件规则配置具体列名,使其形成单一规则,再将不同的单一规则通过假设关系组合为组合规则。其中,组合关系包括且、或关系。
在配置好组合规则后,先根据该组合规则对数据表进行验证。其中,根据组合规则中的假设关系将组合规则进行分层,采用层层递进的方式根据每一层的规则对数据表进行验证,若每一层均验证通过,则组合规则验证通过,若其中有一层验证不通过,则输出错误。例如,组合规则为“如果任务表中任务类型为1,则等级上限必须大于10,则组队限制必须等于1”,将组合规则分为第一层“如果任务表中任务类型为1,则等级上限必须大于10”和第二层“如果第一层验证通过,则组队限制必须等于1”,先对第一层进行验证,若第一层验证通过,则继续对第二层进行验证。将验证后的组合规则设置为该数据表的组合规则,以便数据表定时根据该组合规则进行检查。
进一步地,在所述通过所述零件规则的函数对所述数据表中的数据进行检查之后,还包括:
将检查结果保存在表格中,并将所述表格发送给预先设置的邮箱。
预先给每个数据表配置负责人,并将负责人的相关信息进行保存。同时,将数据表的组合规则进行危险级别的指定,一般分为A、B、C、D四个等级,分别对应非常严重、重要、普通、警告四种情况。在数据表检查完后,将检查结果保存在excel表中,检查结果会显示出错信息及其危险等级,再将该表格以附件的形式通过邮件发送给相应负责人,以便给负责人一个明确、清晰的处理顺序。通过对检查结果的自动反馈,实现数据表的高效自动化。
进一步地,所述零件规则库中还封装有特殊规则的函数;
所述数据表检查方法还包括:
当获取的所述数据表的规则不能被拆分为单一规则时,从所述零件规则库中调用所述特殊规则的函数对所述数据表中的数据进行检查。
需要说明的是,当获取的所述数据表的规则不能被拆分为单一规则时,判定获取的规则为特殊规则。特殊规则无法通过结巴分词获得,即无法通过零件规则组合形成,因此,需要单独将特殊规则的函数封装到零件规则库中,并提供特殊规则设计接口以供调用。特殊规则的使用率非常低,可建立少量的特殊规则来满足特殊的需求。
进一步地,所述数据表为配置游戏属性的数据表。
需要说明的是,本发明实施例提供的数据表的检查方法可通过网站可视化配置来实现。普通用户可通过网页页面为数据表添加规则、修改规则和自主选择规则检查。在添加规则时,直接输入组合规则用例,并可通过可选按钮来选择是否增加递进的判定形式,另外,还需增加规则的重要等级、出错提示和规则描述等。管理员对普通用户添加的规则进行审核,也可修改普通用户的规则,在规则审核通过后,为数据表配置定时自动检查的时间。规则配置完后,网站后台对数据表进行检查,将检查结果以表格形式输出,并反馈到网站前台。采用网站配置的形式来进行数据表检查,使检查更加人性化,同时容易上手,适用于普遍群体。
本发明实施例提供的数据表的检查方法,能够在对数据表进行检查时,将数据表的组合规则拆分为具有一个零件规则的单一规则,再从零件规则库中直接调用每个零件规则所对应的函数对数据表进行检查,使数据表的规则无需通过编写代码来实现,从而提高数据表的检查效率和准确性;在配置数据表的组合规则时,直接选取零件规则进行组合即可,无需通过程序人员编写代码来实现,从而减少人力,节省时间,方便维护;定时或在数据表更新时自动对数据表进行检查,并将检查结果发送给负责人邮箱,实现自动化检查和反馈,减少人力维护成本;将各种格式的数据源表中的数据统一转换为相同格式的数据进行保存,在对数据表进行检查时,直接读取保存的数据即可,从而适用于各种类型的数据表的检查,且提高数据的读取速度和处理效率。
相应的,本发明还提供一种数据表的检查装置,能够实现上述实施例中的数据表的检查方法的所有流程。
参见图6,是本发明提供的数据表的检查装置的一个实施例的结构示意图,包括:
组合规则获取模块1,用于获取数据表的组合规则;
拆分模块2,用于将所述组合规则拆分为N个单一规则;N≥1;每个单一规则包括一个零件规则;
调用模块3,用于逐一从预先配置的零件规则库中调用每个单一规则中的零件规则所对应的函数;以及,
检查模块4,用于通过所述零件规则的函数对所述数据表中的数据进行检查。
进一步地,所述组合规则获取模块1具体用于在定时器达到预设的检查时间时或在检测到数据表中的数据更新时,获取所述数据表的组合规则。
进一步地,所述每个单一规则还包括所述数据表中的待检查列名;
所述检查模块4具体包括:
数据读取单元71,用于从预先建立的通用数据库中逐一读取所述数据表中每个主键及其相应的列名数据;所述主键为数据表中每一行数据的唯一识别码;所述列名数据为每个列名及其相应的数据;
判断单元72,用于逐一判断每个主键是否为预设的待检查主键;
数据检查单元73,用于在所述判断单元判定为是时,通过所述零件规则的函数对所述主键中的所述待检查列名的数据进行检查;以及,
数据丢弃单元74,用于在所述判断单元判定为否时,丢弃所述主键及其相应的列名数据。
进一步地,所述数据表的检查装置还包括:
数据源表获取模块81,用于获取数据源表,所述数据源表为所述数据表的原始版本;所述数据源表为EXCEL格式、CSV格式、XML格式或数据库MYSQL格式的配置表;
数据识别模块82,用于识别出所述数据源表中待读取数据所在的行数;
主键配置模块83,用于为识别出的每一行待读取数据配置主键;所述主键为数据表中每一行数据的唯一识别码;
数据提取模块84,用于提取所有待读取数据;
数据格式转换模块85,用于将所有待读取数据的数据格式转换为字符串格式;以及,
数据保存模块86,用于将每个主键和每行列名数据一一对应地保存在所述通用数据库中;所述列名数据为每个列名及其相应的字符串格式的待读取数据。
进一步地,所述数据表的检查装置还包括:
零件规则库配置模块,用于配置所述零件规则库;以及,
组合规则配置模块,用于根据所述数据表,从所述零件规则库中选取零件规则,配置所述数据表的组合规则。
进一步地,所述零件规则库配置模块具体包括:
规则获取单元91,用于获取各种数据表所需的规则;
分词单元92,用于采用结巴分词,对获取的规则进行分词,获得规则词语;
过滤单元93,用于查询预先建立的词库,对所述规则词语进行过滤,获得所述规则词语中的关键词;
统计单元94,用于统计每个关键词的使用频率,并对所有关键词进行分类;
提取单元95,用于提取每个类型中使用频率高于预设阈值的关键词,并将提取的关键词设为零件规则;以及,
封装单元96,用于将所有零件规则所对应的函数封装在零件规则库中。
进一步地,所述组合规则配置模块具体包括:
零件规则选取单元101,用于根据所述数据表,选取所述零件规则库中的零件规则;
单一规则配置单元102,用于根据所述数据表的列名和选取的零件规则,配置单一规则;以及,
组合规则配置单元103,用于将不同的单一规则进行组合,配置成所述数据表的组合规则。
进一步地,所述数据表的检查装置还包括:
检查结果保存模块,用于将检查结果保存在表格中,并将所述表格发送给预先设置的邮箱。
进一步地,所述零件规则库中还封装有特殊规则的函数;
所述数据表检查装置还包括:
特殊规则检查模块,用于当获取的所述数据表的规则不能被拆分为单一规则时,从所述零件规则库中调用所述特殊规则的函数对所述数据表中的数据进行检查。
进一步地,所述数据表为配置游戏属性的数据表。
实施本发明实施例,具有如下有益效果:
本发明实施例提供的数据表的检查装置,能够在对数据表进行检查时,将数据表的组合规则拆分为具有一个零件规则的单一规则,再从零件规则库中直接调用每个零件规则所对应的函数对数据表进行检查,使数据表的规则无需通过编写代码来实现,从而提高数据表的检查效率和准确性;在配置数据表的组合规则时,直接选取零件规则进行组合即可,无需通过程序人员编写代码来实现,从而减少人力,节省时间,方便维护;定时或在数据表更新时自动对数据表进行检查,并将检查结果发送给负责人邮箱,实现自动化检查和反馈,减少人力维护成本;将各种格式的数据源表中的数据统一转换为相同格式的数据进行保存,在对数据表进行检查时,直接读取保存的数据即可,从而适用于各种类型的数据表的检查,且提高数据的读取速度和处理效率。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (18)
1.一种数据表的检查方法,其特征在于,包括:
获取数据表的组合规则;
将所述组合规则拆分为N个单一规则;N≥1;每个单一规则包括一个零件规则;
逐一从预先配置的零件规则库中调用每个单一规则中的零件规则所对应的函数;
通过所述零件规则的函数对所述数据表中的数据进行检查;
在所述获取数据表的组合规则之前,还包括:
配置所述零件规则库;
其中,所述配置所述零件规则库,具体包括:
获取各种数据表所需的规则;
采用结巴分词,对获取的规则进行分词,获得规则词语;
查询预先建立的词库,对所述规则词语进行过滤,获得所述规则词语中的关键词;
统计每个关键词的使用频率,并对所有关键词进行分类;
提取每个类型中使用频率高于预设阈值的关键词,并将提取的关键词设为零件规则;
将所有零件规则所对应的函数封装在零件规则库中。
2.如权利要求1所述的数据表的检查方法,其特征在于,所述获取数据表的组合规则,具体包括:
在定时器达到预设的检查时间时或在检测到数据表中的数据更新时,获取所述数据表的组合规则。
3.如权利要求1所述的数据表的检查方法,其特征在于,所述每个单一规则还包括所述数据表中的待检查列名;
所述通过所述零件规则的函数对所述数据表中的数据进行检查,具体包括:
从预先建立的通用数据库中逐一读取所述数据表中每个主键及其相应的列名数据;所述主键为数据表中每一行数据的唯一识别码;所述列名数据为每个列名及其相应的数据;
逐一判断每个主键是否为预设的待检查主键;
若是,则通过所述零件规则的函数对所述主键中的所述待检查列名的数据进行检查;
若否,则丢弃所述主键及其相应的列名数据。
4.如权利要求1所述的数据表的检查方法,其特征在于,在所述获取数据表的组合规则之前,还包括:
获取数据源表,所述数据源表为所述数据表的原始版本;所述数据源表为EXCEL格式、CSV格式、XML格式或数据库MYSQL格式的配置表;
识别出所述数据源表中待读取数据所在的行数;
为识别出的每一行待读取数据配置主键;所述主键为数据表中每一行数据的唯一识别码;
提取所有待读取数据;
将所有待读取数据的数据格式转换为字符串格式;
将每个主键和每行列名数据一一对应地保存在通用数据库中;所述列名数据为每个列名及其相应的字符串格式的待读取数据。
5.如权利要求1至4中任一项所述的数据表的检查方法,其特征在于,在所述配置所述零件规则库之后,在所述获取数据表的组合规则之前,还包括:
根据所述数据表,从所述零件规则库中选取零件规则,配置所述数据表的组合规则。
6.如权利要求5所述的数据表的检查方法,其特征在于,所述根据所述数据表,从所述零件规则库中选取零件规则,配置所述数据表的组合规则,具体包括:
根据所述数据表,选取所述零件规则库中的零件规则;
根据所述数据表的列名和选取的零件规则,配置单一规则;
将不同的单一规则进行组合,配置成所述数据表的组合规则。
7.如权利要求1所述的数据表的检查方法,其特征在于,在所述通过所述零件规则的函数对所述数据表中的数据进行检查之后,还包括:
将检查结果保存在表格中,并将所述表格发送给预先设置的邮箱。
8.如权利要求1所述的数据表的检查方法,其特征在于,所述零件规则库中还封装有特殊规则的函数;
所述数据表检查方法还包括:
当获取的所述数据表的规则不能被拆分为单一规则时,从所述零件规则库中调用所述特殊规则的函数对所述数据表中的数据进行检查。
9.如权利要求1所述的数据表的检查方法,其特征在于,所述数据表为配置游戏属性的数据表。
10.一种数据表的检查装置,其特征在于,包括:
组合规则获取模块,用于获取数据表的组合规则;
拆分模块,用于将所述组合规则拆分为N个单一规则;N≥1;每个单一规则包括一个零件规则;
调用模块,用于逐一从预先配置的零件规则库中调用每个单一规则中的零件规则所对应的函数;以及,
检查模块,用于通过所述零件规则的函数对所述数据表中的数据进行检查;
所述数据表的检查装置还包括:
零件规则库配置模块,用于配置所述零件规则库;
其中,所述零件规则库配置模块具体包括:
规则获取单元,用于获取各种数据表所需的规则;
分词单元,用于采用结巴分词,对获取的规则进行分词,获得规则词语;
过滤单元,用于查询预先建立的词库,对所述规则词语进行过滤,获得所述规则词语中的关键词;
统计单元,用于统计每个关键词的使用频率,并对所有关键词进行分类;
提取单元,用于提取每个类型中使用频率高于预设阈值的关键词,并将提取的关键词设为零件规则;以及,
封装单元,用于将所有零件规则所对应的函数封装在零件规则库中。
11.如权利要求10所述的数据表的检查装置,其特征在于,所述组合规则获取模块具体用于在定时器达到预设的检查时间时或在检测到数据表中的数据更新时,获取所述数据表的组合规则。
12.如权利要求10所述的数据表的检查装置,其特征在于,所述每个单一规则还包括所述数据表中的待检查列名;
所述检查模块具体包括:
数据读取单元,用于从预先建立的通用数据库中逐一读取所述数据表中每个主键及其相应的列名数据;所述主键为数据表中每一行数据的唯一识别码;所述列名数据为每个列名及其相应的数据;
判断单元,用于逐一判断每个主键是否为预设的待检查主键;
数据检查单元,用于在所述判断单元判定为是时,通过所述零件规则的函数对所述主键中的所述待检查列名的数据进行检查;以及,
数据丢弃单元,用于在所述判断单元判定为否时,丢弃所述主键及其相应的列名数据。
13.如权利要求10所述的数据表的检查装置,其特征在于,所述数据表的检查装置还包括:
数据源表获取模块,用于获取数据源表,所述数据源表为所述数据表的原始版本;所述数据源表为EXCEL格式、CSV格式、XML格式或数据库MYSQL格式的配置表;
数据识别模块,用于识别出所述数据源表中待读取数据所在的行数;
主键配置模块,用于为识别出的每一行待读取数据配置主键;所述主键为数据表中每一行数据的唯一识别码;
数据提取模块,用于提取所有待读取数据;
数据格式转换模块,用于将所有待读取数据的数据格式转换为字符串格式;以及,
数据保存模块,用于将每个主键和每行列名数据一一对应地保存在通用数据库中;所述列名数据为每个列名及其相应的字符串格式的待读取数据。
14.如权利要求10至13中任一项所述的数据表的检查装置,其特征在于,所述数据表的检查装置还包括:
组合规则配置模块,用于根据所述数据表,从所述零件规则库中选取零件规则,配置所述数据表的组合规则。
15.如权利要求14所述的数据表的检查装置,其特征在于,所述组合规则配置模块具体包括:
零件规则选取单元,用于根据所述数据表,选取所述零件规则库中的零件规则;
单一规则配置单元,用于根据所述数据表的列名和选取的零件规则,配置单一规则;以及,
组合规则配置单元,用于将不同的单一规则进行组合,配置成所述数据表的组合规则。
16.如权利要求10所述的数据表的检查装置,其特征在于,所述数据表的检查装置还包括:
检查结果保存模块,用于将检查结果保存在表格中,并将所述表格发送给预先设置的邮箱。
17.如权利要求10所述的数据表的检查装置,其特征在于,所述零件规则库中还封装有特殊规则的函数;
所述数据表检查装置还包括:
特殊规则检查模块,用于当获取的所述数据表的规则不能被拆分为单一规则时,从所述零件规则库中调用所述特殊规则的函数对所述数据表中的数据进行检查。
18.如权利要求10所述的数据表的检查装置,其特征在于,所述数据表为配置游戏属性的数据表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510515328.1A CN105094843B (zh) | 2015-08-20 | 2015-08-20 | 一种数据表的检查方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510515328.1A CN105094843B (zh) | 2015-08-20 | 2015-08-20 | 一种数据表的检查方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105094843A CN105094843A (zh) | 2015-11-25 |
CN105094843B true CN105094843B (zh) | 2018-10-09 |
Family
ID=54575371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510515328.1A Active CN105094843B (zh) | 2015-08-20 | 2015-08-20 | 一种数据表的检查方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105094843B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106021220B (zh) * | 2016-06-01 | 2019-03-19 | 网易(杭州)网络有限公司 | 表格检测方法及装置 |
CN111104390A (zh) * | 2019-11-08 | 2020-05-05 | 珠海金山网络游戏科技有限公司 | 一种多csv文件的合并和校验的方法及系统 |
CN112597747A (zh) * | 2021-01-05 | 2021-04-02 | 网易(杭州)网络有限公司 | 数据表的检查方法及装置、电子设备、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241491A (zh) * | 2007-02-05 | 2008-08-13 | 中兴通讯股份有限公司 | 一种检查数据的方法和系统 |
CN101515289A (zh) * | 2009-03-25 | 2009-08-26 | 中国工商银行股份有限公司 | 一种对通用数据文件进行检查的装置及方法 |
CN103593352A (zh) * | 2012-08-15 | 2014-02-19 | 阿里巴巴集团控股有限公司 | 一种海量数据清洗方法及装置 |
-
2015
- 2015-08-20 CN CN201510515328.1A patent/CN105094843B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241491A (zh) * | 2007-02-05 | 2008-08-13 | 中兴通讯股份有限公司 | 一种检查数据的方法和系统 |
CN101515289A (zh) * | 2009-03-25 | 2009-08-26 | 中国工商银行股份有限公司 | 一种对通用数据文件进行检查的装置及方法 |
CN103593352A (zh) * | 2012-08-15 | 2014-02-19 | 阿里巴巴集团控股有限公司 | 一种海量数据清洗方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105094843A (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107204184A (zh) | 语音识别方法及系统 | |
CN103810196B (zh) | 基于业务模型进行数据库性能测试的方法 | |
US7680333B2 (en) | System and method for binary persistence format for a recognition result lattice | |
US20160364377A1 (en) | Language Processing And Knowledge Building System | |
CN108491388B (zh) | 数据集获取方法、分类方法、装置、设备及存储介质 | |
CN105094843B (zh) | 一种数据表的检查方法及装置 | |
CN106372044B (zh) | 一种基于报表生成类型化维度xbrl报告的方法 | |
US20150142718A1 (en) | Ontology-Aided Business Rule Extraction Using Machine Learning | |
CN104462501A (zh) | 基于结构化数据的知识图谱构建方法和装置 | |
CN113051285A (zh) | Sql语句的转换方法、系统、设备及存储介质 | |
CN107239440A (zh) | 一种垃圾文本识别方法和装置 | |
CN104331438B (zh) | 对小说网页内容选择性抽取方法和装置 | |
CN108710647A (zh) | 一种用于聊天机器人的数据处理方法及装置 | |
CN103365992A (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
JP2019503541A5 (zh) | ||
CN106780656A (zh) | 图表输出方法及装置 | |
CN109840255A (zh) | 答复文本生成方法、装置、设备及存储介质 | |
CN109522396B (zh) | 一种面向国防科技领域的知识处理方法及系统 | |
CN107608951A (zh) | 报表生成方法和系统 | |
KR102527937B1 (ko) | 인공 지능 기반의 유사 특허 검색 방법 및 그 장치 | |
CN103095726A (zh) | 一种协议解析器的处理方法和装置 | |
CN110019819A (zh) | 分类模型生成方法、电子合同内容自动分类方法及装置 | |
CN110134844A (zh) | 细分领域舆情监控方法、装置、计算机设备及存储介质 | |
CN107526742A (zh) | 用于处理多语言文本的方法和设备 | |
CN106850650A (zh) | 用于游戏客户端访问数据的方法及客户端游戏系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |