職工信息覈對程序是個獨立的一次性項目。用來實現登錄之後可以看到本人的信息,進行覈對並提交。前期的數據庫準備工做比較繁瑣,由於沒有現成的數據庫,有的只是一張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
你會麼?把重名和名字有包含關係的都篩選出來,寫個SQL語句唄。code
我想了好久沒有辦法,據說用遊標寫應該能夠,可是讓我用遊標寫一個,我還不如把這些姓名導入到文本,寫個控制檯程序來篩選得了。因而我就用C#寫另外一個判斷名字同名或者被其餘人名字包含的程序。 輸入是一個存放有全部姓名的文本文件,輸出是記錄有包含關係的文本文件。blog
這個程序運行完了之後,就會把符合要求的名字寫到一個文本文件裏。將這些人的名字排除掉,再執行以前自動匹配姓名的SQL語句,就不會報錯了,若是還有報錯,那就是照片文件名也存在相似的問題,這個也須要處理。ip
匹配完這些照片文件名後,就須要手動匹配剩下的了。我認可手動匹配了大約145條記錄。發現自動匹配不上的還有那些姓名和照片文件名名字有不一樣的,好比司馬懿寫成司馬壹的。get
匹配完全部照片之後,對photo字段內容處理一下,就是咱們要的路徑格式了。
update workerinfo
set photo = './images/'+photo
where photo is not null;
數據庫部分到這裏就準備完成了,接下來要寫Web應用了。