专利名称:数据库清洗系统及方法
技术领域:
本发明涉及一种数据库清洗系统及方法。
背景技术:
在现今企业信息化进程的飞速发展中,企业信息系统数据库的数据量呈爆炸式的增长。 如果在数据库早期的设计中没有进行科学合理的规划设计,加上后期人工大量输入数据,造 成数据库中的许多核心数据经常出现残缺,编码格式混乱、乱码及数据冗余等现象。在对数 据库进行升级时,造成大量数据错误出现、丢失,影响企业信息化进程。现代企业信息系统 升级频率越来越高,对数据库中数据的正确性及完整性要求也越来越严格。
数据库清洗是指为了保证数据库中的数据符合标准格式,对数据进行标准化的过程,目 的在于减少数据库中所存储的数据的错误和不一致性。以往设计者需要手动来进行数据库清 洗,对数据库格式进行整体转换。这样的人工操作步骤繁琐、容易出错,并且效率低。
发明内容
鉴于以上内容,有必要提供一种数据库清洗系统,其可自动对数据库中的数据进行标准 化处理。
鉴于以上内容,还有必要提供一种数据库清洗方法,其可自动对数据库中的数据进行标 准化处理。
一种数据库清洗系统,包括主机及数据库,所述数据库中存储有数据及该数据的属性, 所述数据属性包括数据的编码格式、字符格式及字符长短,所述主机设置有数据转换字典, 用于定义脏数据及所述脏数据的修改规则,该主机还包括数据读取模块,用于访问所述数 据库,获取所述数据库的属性,从数据库中读取一行数据,并获取该行数据的属性;编码格 式变更模块,用于在所述数据读取模块读取的数据的编码格式不符合设定标准时,将该数据 的编码格式变更为标准的编码格式;脏数据修改模块,用于在所述数据读取模块读取的数据 含有脏数据时,根据所述数据转换字典的设置,按照所述脏数据的修改规则,将所述数据中 的脏数据修改为对应的新数据;数据标准化模块,用于对所述数据读取模块读取的数据进行 标准化处理,将经过标准化处理后的新数据导入所述数据库中。
一种数据库清洗方法,包括如下步骤设置数据转换字典,定义数据库中的脏数据及所 述脏数据的修改规则;访问所述数据库,获取所述数据库的属性,从数据库中读取一行数据,并获取该行数据的属性,所述数据属性包括数据的编码格式、字符格式及字符长短;若所 述读取的数据的编码格式不符合设定标准,则将该数据的编码格式变更为标准的编码格式; 若所述读取的数据含有脏数据,则根据所述数据转换字典的设置,按照所述脏数据的修改规 则,将所述数据中的脏数据修改为对应的新数据;对所述读取的数据进行标准化处理,将经 过标准化处理后的新数据导入所述数据库中;重复所述读取数据、变更数据编码格式、修改 脏数据及数据标准化的步骤,直到所述数据库中的所有数据处理完毕。
相较于现有技术,所述的数据库清洗系统及方法,可以自动将数据库中的数据编码格式 转换成标准的编码格式,将脏数据修改成新数据,并对数据库中的数据进行标准化处理,避 免了手动清洗数据库的繁琐步骤,提高了数据库清洗的工作效率。
图l是本发明数据库清洗系统较佳实施例的硬件架构图。
图2是图1所示主机的功能模块图。
图3是图1所示数据转换字典的示意图。
图4是本发明数据库清洗方法较佳实施例的流程图。
具体实施例方式
如图1所示,是本发明数据库清洗系统较佳实施例的系统架构图。该系统主要包括显示 器l、主机2、键盘3及鼠标4,所述主机2连接有数据库5,所述数据库5为需要进行数据清洗 的数据库,存储有数据及所述数据的属性,所述数据属性包括数据编码格式、字符格式及 字符长短等。所述主机2中设置有数据转换字典21,所述数据转换字典21用于定义脏数据及 所述脏数据的修改规则。所述脏数据即数据库5中存储的不完整、错误的数据,该脏数据的 类型可以由用户自己来定义。所述修改规则可以是一种哈希函数,通过该哈希函数,可以将 所述脏数据转换成正确的新数据。如图3所示,是图1所示数据转换字典21的示意图。所述数 据转换字典21中第一列的数据为脏数据,第二列的数据为新数据。通过所述哈希函数的运算 ,可以将数据库5中的脏数据转换成对应的新数据。假设所述哈希函数为H (X) = Y,其中H 代表转换规则(即某一种数据转换函数),X代表旧数据,Y代表新数据。如果用户在数据转 换字典21中定义了a⑥b (@代表空格)为脏数据,并且定义该脏数据的转换规则H为将所述 脏a⑥b中的空格修改为"-",通过该哈希函数的转换,所述数据库5中所有的脏数据a⑥ b将修改为a-b。
所述主机2用于将所述数据库5中的数据编码格式转换成标准的编码格式,将脏数据修改 成新数据,并对数据库5中的数据进行标准化处理。所述主机2连接有显示器1、键盘3及鼠标4,用作对数据库5清洗过程中的输入、输出设备。
如图2所示,是图1所示主机2的功能模块图。所述主机2包括数据读取模块210,编码格 式变更模块211,脏数据修改模块212及数据标准化模块213。本发明所称的模块是完成一特 定功能的计算机程序段,比程序更适合于描述软件在计算机中的执行过程,因此在本发明以 下对软件描述中都以模块描述。
其中,数据读取模块210用于访问所述数据库5,获取所述数据库5的属性(数据库版本 、类型等),从数据库5中读取一行数据(从第一行开始依次往下读取),并获取该行数据 的属性。其中,所述数据属性包括数据编码格式、字符格式及字符长短等。
编码格式变更模块211用于判断所述数据读取模块210读取的数据的编码格式是否符合标 准。如果所述数据的编码格式不符合标准,则将该数据的编码格式变更为标准的编码格式。 所述数据编码格式的标准可以由用户自己定义,例如用户定义数据编码格式的标准为UTF-8 ,如果数据读取模块210读取的数据编码格式不是UTF-8,则编码格式变更模块211会将该数 据的编码格式变更为UTF-8。
脏数据修改模块212用于根据所述数据转换字典21的设置,判断所述数据读取模块210读 取的数据是否含有脏数据。如果所述数据中含有脏数据,则根据元素化分离识别算法,将所 述数据进行分解,按照所述脏数据的修改规则,将其中的脏数据修改为对应的新数据。
数据标准化模块213用于对所述数据读取模块210读取的数据进行标准化处理,将经过标 准化处理后的新数据导入所述数据库5中。具体而言,如果所述数据读取模块210读取数据为 字符,则数据标准化模块213判断所述字符的格式是否符合标准。如果所述字符的格式不符 合标准,则将该字符格式变更为标准的字符格式。所述字符格式的标准可以由用户自己定义 ,例如用户定义字符格式的标准为8个字节长,如果数据读取模块210读取的数据字符格式不 是8个字节长,则数据标准化模块213会将该数据的字符格式变更为8个字节长。如果所述数 据读取模块210读取数据为整数,则数据标准化模块213判断所述整数的范围是否符合标准。 如果所述整数的范围不符合标准,则将该整数变更为符合标准范围的整数。所述整数范围的 标准可以由用户自己定义,例如用户定义整数范围的标准为0-255,如果数据读取模块210读 取的整数为-1,则数据标准化模块213会将该整数-1变更为+1或其它用户定义的数值。然后 ,数据标准化模块213对修改后的新数据进行一致性检测与修复,并对所述修改后的新数据 进行压縮,将压縮后的新数据导入所述数据库5中。
数据标准化模块213还用于判断所述数据库5中的数据是否读取完毕,如果没有读取完毕 ,则数据读取模块210读取数据库5中的下一行的数据。如图4所示,是本发明数据库清洗方法较佳实施例的流程图。首先,步骤S401,数据读 取模块210访问所述数据库5,获取所述数据库5的属性(数据库版本、类型等)。
步骤S402,数据读取模块210从所述数据库5中读取一行数据(从第一行开始依次往下读 取),并获取该行数据的属性。其中,所述数据属性包括数据编码格式、字符格式及字符 长短等。
步骤S403,编码格式变更模块211判断所述数据读取模块210读取的数据的编码格式是否 符合标准。如果所述数据的编码格式符合标准,则流程直接转到步骤S405。
如果所述数据的编码格式不符合标准,步骤S404,编码格式变更模块211将该数据的编 码格式变更为标准的编码格式。所述数据编码格式的标准可以由用户自己定义,例如用户定 义数据编码格式的标准为UTF-8,如果数据读取模块210读取的数据编码格式不是UTF-8,则 编码格式变更模块211会将该数据的编码格式变更为UTF-8 。
步骤S405,脏数据修改模块212根据所述数据转换字典21的设置,判断所述数据读取模 块210读取的数据是否含有脏数据。如果所述数据中不含脏数据,则流程直接转到步骤S407 。所述数据转换字典21用于定义脏数据及所述脏数据的修改规则。所述脏数据即数据库5中 存储的不完整、错误的数据,该脏数据的类型可以由用户自己来定义。所述修改规则可以是 一种哈希函数,通过该哈希函数,可以将所述脏数据转换成正确的新数据。如图3所示,是 图1所示数据转换字典21的示意图。所述数据转换字典21中第一列的数据为脏数据,第二列 的数据为新数据。通过所述哈希函数的运算,可以将数据库5中的脏数据转换成对应的新数 据。假设所述哈希函数为H (X) = Y,其中H代表转换规则(即某一种数据转换函数),X代 表旧数据,Y代表新数据。如果用户在数据转换字典21中定义了cde为脏数据,并且定义该脏 数据的转换规则H为将所述脏数据cde修改为dec,通过该哈希函数的转换,所述数据库5中所 有的脏数据cde将修改为dec。
如果所述数据中含有脏数据,步骤S406,脏数据修改模块212根据元素化分离识别算法 ,将所述数据进行分解,按照所述脏数据的修改规则,将其中的脏数据修改为对应的新数。
步骤S407,数据标准化模块213对所述数据读取模块210读取的数据进行标准化处理,将 经过标准化处理后的新数据导入所述数据库5中。
具体而言,如果所述数据读取模块210读取数据为字符,则数据标准化模块213判断所述 字符的格式是否符合标准。如果所述字符的格式不符合标准,则将该字符格式变更为标准的 字符格式。所述字符格式的标准可以由用户自己定义,例如用户定义字符格式的标准为8个 字节长,如果数据读取模块210读取的数据字符格式不是8个字节长,则数据标准化模块213会将该数据的字符格式变更为8个字节长。如果所述数据读取模块210读取数据为整数,则数 据标准化模块213判断所述整数的范围是否符合标准。如果所述整数的范围不符合标准,则 将该整数变更为符合标准范围的整数。所述整数范围的标准可以由用户自己定义,例如用户 定义整数范围的标准为0-255,如果数据读取模块2IO读取的整数为-1 ,则数据标准化模块 213会将该整数-l变更为+l或其它用户定义的数值。然后,数据标准化模块213对修改后的新 数据进行一致性检测与修复,并对所述修改后的新数据进行压縮,将压縮后的新数据导入所 述数据库5中。
步骤S408,数据标准化模块213判断所述数据库5中的数据是否读取完毕,如果没有读取 完毕,则流程回到步骤S402。如果所述数据库5中的数据读取完毕,则流程结束。
权利要求
1.一种数据库清洗系统,包括主机及数据库,所述数据库中存储有数据及该数据的属性,所述数据属性包括数据的编码格式、字符格式及字符长短,其特征在于,所述主机设置有数据转换字典,用于定义脏数据及所述脏数据的修改规则,该主机还包括数据读取模块,用于访问所述数据库,获取所述数据库的属性,从数据库中读取一行数据,并获取该行数据的属性;编码格式变更模块,用于在所述数据读取模块读取的数据的编码格式不符合设定标准时,将该数据的编码格式变更为标准的编码格式;脏数据修改模块,用于在所述数据读取模块读取的数据含有脏数据时,根据所述数据转换字典的设置,按照所述脏数据的修改规则,将所述数据中的脏数据修改为对应的新数据;及数据标准化模块,用于对所述数据读取模块读取的数据进行标准化处理,将经过标准化处理后的新数据导入所述数据库中。
6 如权利要求5所述的数据库清洗方法,其特征在于,所述脏数据是 所述数据库中存储的不完整、错误的数据。
7 如权利要求6所述的数据库清洗方法,其特征在于,所述修改规则 是一种将所述脏数据转换成正确的新数据的哈希函数。
8 如权利要求5所述的数据库清洗方法,其特征在于,所述步骤对所 述读取的数据进行标准化处理是指将所述读取的数据的字符格式及范围变更为标准的字符格 式和范围。
全文摘要
一种数据库清洗系统及方法,该方法包括如下步骤设置数据转换字典,定义数据库中的脏数据及所述脏数据的修改规则;访问所述数据库,获取所述数据库的属性,从数据库中读取一行数据,并获取该行数据的属性,所述数据属性包括数据的编码格式、字符格式及字符长短;若所述读取的数据的编码格式不符合设定标准,则将该数据的编码格式变更为标准的编码格式;若所述读取的数据含有脏数据,则根据所述数据转换字典的设置,按照所述脏数据的修改规则,将所述数据中的脏数据修改为对应的新数据;对所述读取的数据进行标准化处理,将经过标准化处理后的新数据导入所述数据库中。利用本发明可以自动对数据库中的数据进行标准化处理。
文档编号G06F17/30GK101290622SQ20071020049
公开日2008年10月22日 申请日期2007年4月20日 优先权日2007年4月20日
发明者浩 闫 申请人:鸿富锦精密工业(深圳)有限公司;鸿海精密工业股份有限公司