职工信息核对总结

职工信息核对程序是个独立的一次性项目。用来实现登录之后可以看到本人的信息,进行核对并提交。前期的数据库准备工做比较繁琐,由于没有现成的数据库,有的只是一张excel表和1500多张JPG格式的照片,我先要把这些资料整理到数据库中保存起来,才能开始写网站。数据库

首先利用SQL Server现有的工具把excel导入到数据库中,而后我再添加几个字段:photo用来显示照片路径,flag用来表示核对结果等,在数据库里也只用一张表进行保存。vim

接下来的问题是这项工做中最繁琐的:我须要把名字和照片匹配起来,好比姓名是李小明,那么它的photo应该显示李小明照片的文件名路径。个人思路是:完成这个匹配操做须要一个前提:应该有这么一张表,这张表只有一个字段imagefile,这个字段用来表示照片的文件名。而后把全部的照片名列出在这张表里。有了这张表,我就应该能经过SQL语句,把职工姓名和照片部分匹配起来。我花了一番功夫把全部照片的文件名写入到了数据库的images表里,这里的功夫就是用了ls > imagenames.txt,而后用vim对这个imagenames处理一下,所有insert 到 images里就行了。工具

    接下来就是SQL语句的任务了,照片文件名确定包含了照片主人的姓名,能够根据这一点来写SQL语句:网站

update workerinfo set photo = (  select imagefile from images where images.imagefile like '%'+workerinfo.name+'%' )

执行后发现报错,缘由是有职工的姓名可能重名,或者是包含了其余人的名字,好比(李明明包含了李明),所以这样匹配出来的照片文件名就不惟一,没法赋值。spa

对于包含这些人名记录,暂时是想不出自动匹配的快捷方法了。因此我要作的就是把这些排除在外,先不考虑。因而问题就转化为如何把这样的名字筛选出来。即如何写SQL语句,将同名、或者名字被其余人名字包含的记录筛选出来。excel

 wps_clip_image202886

你会么?把重名和名字有包含关系的都筛选出来,写个SQL语句呗。code

 

我想了好久没有办法,据说用游标写应该能够,可是让我用游标写一个,我还不如把这些姓名导入到文本,写个控制台程序来筛选得了。因而我就用C#写另外一个判断名字同名或者被其余人名字包含的程序。 输入是一个存放有全部姓名的文本文件,输出是记录有包含关系的文本文件。blog

这个程序运行完了之后,就会把符合要求的名字写到一个文本文件里。将这些人的名字排除掉,再执行以前自动匹配姓名的SQL语句,就不会报错了,若是还有报错,那就是照片文件名也存在相似的问题,这个也须要处理。ip

匹配完这些照片文件名后,就须要手动匹配剩下的了。我认可手动匹配了大约145条记录。发现自动匹配不上的还有那些姓名和照片文件名名字有不一样的,好比司马懿写成司马壹的。get

匹配完全部照片之后,对photo字段内容处理一下,就是咱们要的路径格式了。

update workerinfo

set photo = './images/'+photo 

where photo is not null;

数据库部分到这里就准备完成了,接下来要写Web应用了。

相关文章
相关标签/搜索