批量数据入库在ASP中筛选重复的处理方法
——以湘西民族职业技术学院新生信息录入库为例*

2014-09-06 08:39
关键词:身份证号源代码数据表

龚 书

(湘西民族职业技术学院,湖南 吉首 416000)

批量数据入库在ASP中筛选重复的处理方法
——以湘西民族职业技术学院新生信息录入库为例*

龚 书

(湘西民族职业技术学院,湖南 吉首 416000)

在建立数据库时,重复数据的判断对于数据库管理至关重要,没有准确关键词作为对比,重复数据的判断将变得非常困难.传统的哈稀技术、固定分块技术、滑动块技术、可变分块技术和数据指纹等对重复数据进行查找与删除时,占用了大量系统处理时间,且准确性较低.为提高数据处理效率,提出了ASP批量数据在入库时的查重筛选方法,实践验证了该方法的鲁棒性与可靠性,极大地减轻了操作员对数据库管理的繁重工作.

清除重复;数据清理;数据核对;筛选入库;数据仓库;数据导出

网络技术的高速发展和应用,促使信息技术的革新与发展.随着大批量信息的不断增加,越来越多的人都在考虑如何共享资源,建立一个大的信息资源库,“数据仓库”[1]一词便应运而生.由于各种复杂原因,数据源在入库时的标准不统一、录入人员的失误、数据属性值的缺失、不同数据源对数据值的表示差异等,数据源数据变得繁杂而多样,核对后发现其实许多都是相同或相似数据[2-4],对这样的冗余数据必须加以处理之后方可入库,从而保证数据库的高效性和实用性.文中以某校新生数据入库为例,阐述了重复ASP批量数据的入库处理方法.

1 数据常规导入方法

新生数据采集方式通常采用网站B/S架构形式,最初构想是录入人员分层次进行,比如学生、家长、招生人员、教师、管理员等,对每位数据采集人员进行权限等级设置,各司其职,对自己录入数据可以反复查询并修改,管理员可以通过后台全面核查管理.

正常采集是操作人员登录网站后进行数据录入,在网页界面中已经实现对新数据与库存数据的查重筛选,如果发现疑似数据,就立即提醒操作人员核查以防重复数据入库.具体实施办法是提取学生姓名作为“指纹”[5-6],并与库索引进行比较,次关键字为身份证号码.本应该身份证号为首关键字,姓名为次关键字,但在实际操作过程中有近50%以上的学生报名时无法提供身份证号.原因其一是家长不够重视身份的确认,部分家长在学生初中毕业后还未办理户籍登记;其二是部分学生拥有2个身份证号码,在办理新住户登记时未注销旧号码,甚至出现同一人有多个身份证号码现象;其三是为节省时间,登记人员省略身份证号码登记,这样造成学生身份确认不严谨,加大了数据核查工作量.针对此类现象,对数据源数据进行相同或相似性筛选[2-4],筛选后将重复结果展示给录入人员.录入人员根据筛查情况进行相应处理,这样避免重复数据入库,对于查出身份证号完全相同的情形,在提示过后坚决不允许入库.

该校招生结构主要以地区招生组为主,70%以上数据均来自各招生组.招生工作的特殊性,使得很多时候无法登录招生网站,无法直接进行数据采集.各招生组则采用Excel表自建完成,数据来源情况繁杂、参差不齐.为缩短数据入库时间,提高入库效率,对该数据源的处理方法一般采用Excel数据表导入形式.

通常的导入数据方法为按库结构建立Excel数据表[7],填充数据后再导入数据库.源代码如下:

创建Excel连接驱动

set StrConnect=CreateObject("ADODB.Connection")

StrConnect.Open "provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Excel&";Extended Properties=Excel 8.0"

创建数据对象

Set rs = Server.CreateObject("ADODB.Recordset")

rs.Open "select * from ["&Result&"$] ",StrConnect,2,2

set rssql=server.CreateObject("adodb.recordset")

rssql.Open "select * from "&Result&"",conn,1,3

数据入库

rssql.Open "select * from "&Result&"",conn,1,3

rssql.AddNew

For i = 0 to rs.fields.count-1

if rs(i)<>"" then

rssql(i+1) = rs(i)

end if

next

rssql.Update

2 问题分析

以上代码导入全表数据成功无误,若遇到数据重复,最常用的方法是根据身份证号码作为关键字对比排查重复,但实际情况有时会碰到数据缺失问题(数据属性值欠缺),如身份证号码不全或无身份证号码.据统计,每年这种情况占50%之多,因此只能根据姓名及其他属性信息进行排查(通常采用角度相似性测度匹配算法[7]).具体设计方案如下:

(1)将判断重复首要关键字改为“姓名”,次关键字为“身份证号码”,其他属性值一一匹配排查.其具体源代码如下:

if rs("IDcard")<>"" then ‘如果身份证号字段不为空,查重按姓名和身份证号对比

rssql.Open "select * from "&Result&" where RegName='" & rs("RegName") & "' or IDcard='" & rs("IDcard") & "'",conn,1,3

else ‘如果身份证号字段为空,查重只按姓名对比

rssql.Open "select * from "&Result&" where RegName='" & rs("RegName") & "'",conn,1,3

end if

在导入数据时,最先导入的数据可以作为特征词[1],后续导入的数据与特征词进行相似性比较,这样可以保障新建库时首次导入也能消除重复数据.

(2)罗列出成功导入信息及失败导入信息.其具体源代码如下:

If rssql.eof or request.form("InsertID")<>"" Then '判断不重复数据或强行导入重复数据

rssql.AddNew

写入数据时,如果“ID”编号为自动,就不要在xls表中加入“ID字段”.导入提交数据前先删除所有记录,并重置序号,否则导入失败.筛选重复后数据源导入数据库的代码如下:

For i = 0 to rs.fields.count-1

if rs(i)<>"" then

rssql(i+1) = rs(i)

end if

next

rssql.Update

TureCount=TureCount+1

response.write "

"

Response.Write "
"

txtFile.WriteLine "


"

Else '判断重复数据后列出

response.write "


"

FalseInto=FalseInto &"" '失败记录号累计

response.write "


"

Response.Write "
"

txtFile.WriteLine ""&year(date())&"年"&month(date())&"月"&day(date())&"日 "&time()&" 导入数据




"

导入数据后若出现失败提示(见图1),则首先确定是否重复,如果确定数据没有重复,那么勾选“确定导入”,如果确定数据重复可不予处理.若需要对库数据加以补充则可勾选“修改”,参照导入数据对库数据进行完善.

图1 导入数据后的提示界面

(3)数据处理过程.其源代码如下:

response.Write "

"

response.Write ""

其处理办法是客户端提交需要导入的记录,使用多选框勾选提交,服务器再进行2次导入,如果遇到记录数过多时就记下失败记录号进行索引以备后查.其代码如下:

FalseInto=FalseInto &"" '失败记录号累计

Response.Write "

失败导入记录号:
Excel公式:=LEFT(B1,LEN(B1)-1)

"

失败记录号可以进行页内链接跳转,点击表中学生姓名,可以直接跳转至该生信息所在位置,解决页面信息过长等漏查现象,失败记录号可以从页面中复制到Excel表中进行导入筛查.

身份证号码有误时,可以进行其他字段的自动对比判断重复,无需人工干预直接得出重复结论.但数据来源复杂会存在以下问题:(1)错字现象,同音不同字,如“侯源”和“候沅”;(2)报错的现象,如“张三”和“张小三”;(3)数据交错现象,如A数据串到B.诸如此类人为错误过多,无法统计或估计,所以只能根据算法得出的相似度来判断其是否重复,这样阻碍了一次性重复判断的可能性.导入全过程使用日志记录以备核查,从而进行2次导入确认数据的有效性,导入同时还可以进行数据合并操作.

3 数据导出

导出数据库数据生成Excel数据表的源代码如下[7]:

·创建文件对象

Set fs = server.CreateObject("scripting.filesystemobject")

filename = Server.MapPath("users.xls")

·创建EXCEL文件

set myfile = fs.CreateTextFile(filename,true)

·创建数据库对象

strSql = "select * from "&mAction&""

·导出数据

Set rstData =conn.execute(strSql)

if not rstData.EOF and not rstData.BOF then

dim trLine,responsestr

strLine=""

For each x in rstData.fields

strLine = strLine & x.name & chr(9)

Next

myfile.writeline strLine '

Do while Not rstData.EOF

strLine=""

for each x in rstData.Fields

strLine = strLine & x.value & chr(9)

next

myfile.writeline strLine

rstData.MoveNext

loop

end if

rstData.Close

set rstData = nothing

Conn.Close

将全库数据原样导出成Excel数据表,其数据类型会发生改变,如身份证号码的数据类型由字符型“433101199012035431”变成数值型“4433101199012035000”.解决办法是将导出数据进行类型处理,程序段“strLine = strLine & x.value & chr(9)”改成“strline= strline & "="""&x.value &""""& chr(9)”,在导出的Excel数据表中将全部数据复制,选择性粘贴时选择“数值”,即可得到无损数据.

4 结语

在全人工处理过程中,通常将多方数据源进行合并,由于采集数据人员的习惯及环境因素的限制等因素,造成了数据值不准确或缺失,给数据后期合并处理带来了极大的困难.传统方法是利用Excel高级筛选、Excel函数“=countif(A:A,A1) ”或Excel2007及以上版本对数据进行重复值的查询及删除,但这种做法耗时耗力.采用文中方法导入查重程序进行合并数据后,大大缩短合并时间,让操作人员从繁重的数据管理工作中得以解脱.该方法已成功实现大批量数据的入库及核查重复工作,效率比人工处理提高了85%以上.

[1] 赵 群.消除重复值数据清理方法的研究[J].福建电脑,2006(4):51-52.

[2] 敖 莉,舒继武,李明强.重复数据删除技术[J].软件学报,2010,21(5):916-929.

[3] 程菊生.重复数据删除技术的研究[J].华赛科技,2008(4):8-11.

[4] 颜 军.重复数据删除带来集群架构革命[J].计算机世界,2008(24):40-41.

[5] 廖海生,赵跃龙.基于MD5算法的重复数据删除技术的研究与改进[J].计算机测量与控制,2010,18(3):635-638.

[6] BOBBARJUNG D R,JAGANNATHAN S,DUBNICKI C.Improving Duplicate Elimi-nation in Storage Systems[J].ACM Trans.On Storage,2006,2(4):424-448.

[7] 王 斌,吴 磊.中文版Excel2003实用教程[M].北京:清华大学出版社,2007.

(责任编辑 陈炳权)

MethodsofDuplicationScreeningforASPMassDataStorage: A Case Study of Enrollment Information Storage in Xiangxi Vocational and Technical College for Nationalities

GONG Shu

(XiangXi Vocational and Technical College For Nationalities,Jishou 416000,Hunan China)

When a database is established,judgment on data duplication is crucial for its administration,which will be difficult without accurate keywords for reference.The commonly used methods-Hash technology,fixed-sized partition detection technology,sliding block technology,content-defined chunking detection technology,and fingerprint data exploitation,require a large amount of processing time for the detection and removal of duplication.This paper describes the ASP mass data storage method and duplication screening method,and verifies the robustness and validity of these methods.It is shown that the heavy workload of database management for operators can be greatly reduced.

duplication removal;data cleaning;data check;screening and storage;data warehouse;data export

1007-2985(2014)06-0038-04

2014-10-29

龚 书(1979—),男,湖南凤凰人,湘西民族职业技术学院讲师,主要从事计算机应用研究.

TP309

A

10.3969/j.issn.1007-2985.2014.06.010

猜你喜欢
身份证号源代码数据表
基于TXL的源代码插桩技术研究
湖北省新冠肺炎疫情数据表
老师情
作品赏析(3)
基于列控工程数据表建立线路拓扑关系的研究
软件源代码非公知性司法鉴定方法探析
基于语法和语义结合的源代码精确搜索方法
揭秘龙湖产品“源代码”
图表
《网印工业》关于作者投稿同时提供身份证号的通知