国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

大型數據庫信息排錯一法

2024-07-21 02:41:00
字體:
來源:轉載
供稿:網友

  摘要 個人信息庫是醫療保險信息治理系統中最為重要的基礎數據庫之一,數據初次錄入計算機后,會有許多差錯,一般地要花費數月的時間和大量的人力物力來整理。本文介紹了一種采用"軟件"排錯的方法,該方法效果非凡明顯。

  類似如醫療保險信息治理系統的應用系統,有非常大的數據量,采用的是Oracle之類的大型數據庫。個人信息庫是醫療保險信息治理系統中最為重要的基礎數據庫之一,它記錄了每個參保人員與參加醫療保險有關的信息,如"姓名"、"性別"、"社保編號"、"人員分類"……等幾十個字段,一般都有數以萬計、十萬計的參保人員。將這樣大量的數據初次錄入計算機后,會有許多差錯,而軟件商提供的醫療保險信息治理系統皆沒有提供數據庫信息的排錯功能,為此現有的各醫療保險信息治理系統軟件的用戶們都花費了數月的時間和大量的人力物力來整理個人信息數據庫。

  為了解決個人信息數據庫的排錯的問題,加快排錯的進度和準確性,四川省南充市醫保中心采用"軟件"排錯的方法,其效果非凡明顯。

  其步驟如下:

  一、 從Oracle數據庫中得到某單位"9999"的個人信息存入文本格式文件out.txt

  啟動sql*plus

  設置環境變量:

set heading off
set pagesize 0
set feedback off
set trimspool on
set echo off
  設置輸出:

spool d:/out.txt
  輸出單位"9999"的所有人員的姓名、性別、社保編號、人員分類等字段(以","分隔)到d:/out.txt:

select xm','xb','sbbh','ryfl',' from shbx_nc.grxxk where dwid=9999;
  關閉輸出,將緩沖寫入d:/out.txt:

spool off
  重復

spool d:/out8888.txt
select xm','xb','sbbh','ryfl',' from shbx_nc.grxxk where dwid=8888;
spool off
  可從Oracle數據庫中獲取某單位"8888"的個人信息。

  二、打開FoXPRo,建立兩個數據庫

  1.數據庫D:/DBF/LYC1.DBF 結構表:

FieldField Name TypeWidth 1 XH Integer4 序號 2 XM Character 10 姓名 3 XB Character4 性別 4 SBBHCharacter40 社保編號 5 RYFLCharacter10人員分類 6 BJ Character2 標記 7 DB Character 20 對比** Total ** 91
  2.數據庫D:/DBF/LYC1_1.DBF結構表

FieldField Name Type Width 1 XH Integer4 序號2 XM Character 10 姓名 3 XBCharacter 4 性別 4 SBBH Character 40 社保編號5 ZGZ Integer4 在職工資6 TGZ Integer4 退休工資 7 BJ Character 2 標記 8 DBCharacter20 對比 ** Total **89 
  三、加數據到兩個數據庫

  1.將out.txt 導入到lyc1.dbf

 sele 1
 USE d:/dbf/lyc1.dbf IN 0 EXCLUSIVE
 dele all
 pack
 append from d:/dbf/out.txt fields xm,xb,sbbh,ryfl delimited with ","
 brow
  2.將out1.txt 導入到lyc1.dbf (out1.txt來自與醫保個人帳戶電子文檔,分單位,包含個人的姓名、性別、社保編號、在職工資、退休工資等信息)

sele 2
USE d:/dbf/lyc1_1.dbf IN 0 EXCLUSIVE
dele all
pack
append from d:/dbf/out1.txt fields xh,xm,sbbh,zgz,tgz delimited with ","
brow
  四、比較兩個數據庫的個人信息,設標記

do 1
1.prg
SET DEFAULT TO d:/dbf
SET PATH TO d:/dbf
select 1
use lyc1
select 2
use lyc1_1
do while not eof()
select 1
go 1

locate for xm = lyc1_1 -> xm
do while not eof()
if sbbh = lyc1_1 -> sbbh 假如姓名相同,社保編號也相同,設標記為y
replace xh with lyc1_1 -> xh
replace bj with "y"
replace lyc1_1 -> bj with "y"
if ryfl="在職" and lyc1_1 -> tgz > 0 假如有退休工資,不能是在職
replace ryfl with "在職?"
endif
if ryfl="退休" and lyc1_1 -> zgz > 0
replace ryfl with "退休?"
endif
if ryfl=" " and lyc1_1 -> tgz > 0
replace ryfl with "?退休"
endif
if ryfl=" " and lyc1_1 -> zgz > 0
replace ryfl with "?在職"
endif
exit
else
if bj<>"y" 假如標記沒設為y
replace xh with lyc1_1 -> xh
replace bj with "n" 姓名相同,社保編號不同,設標記為n
endif
continue
endif
enddo
select 2
skip 1
enddo
sele 1
use
sele 2
use
  五、為標記為"n"和" "的記錄尋找"對比"信息

do 2
2.prg
SET DEFAULT TO d:/dbf
SET PATH TO d:/dbf
select 1
use lyc1
select 2
use lyc1_1
select 1
go 1
do while not eof()
if bj="n"
select 2
go 1
locate for xm = lyc1 -> xm
if not eof()
replace db with lyc1 -> sbbh 姓名相同,對比社保編號
replace lyc1 -> db with sbbh
endif
endif
select 1
if bj=" "
select 2
go 1
locate for sbbh = lyc1 -> sbbh
if not eof()
replace db with lyc1 -> xm 社保編號相同,對比姓名
replace lyc1 -> db with xm
endif
endif
select 1
skip 1
enddo
sele 1
use
sele 2
use
  六、打印排錯信息

do p3
p3.prg
clear
set print on
set device to print
set default to d:/dbf
set path to d:/dbf
select 1
use lyc1
i=2
@1,10 say " 醫保數據庫 錯誤記錄:"
@2,10 say '序號 '+'姓名 '+'性別'+' 社保編號 '+' 人員分類 '+'對比提示'
locate for bj="n"
do while not eof()
i=i+1
if i>76
@1,10 say " 醫保數據庫 錯誤記錄:"
@2,10 say '序號 '+'姓名 '+'性別'+' 社保編號 '+' 人員分類 '+'對比提示'
i=3
endif
@i,10 say str(xh,4,0)+" "+xm+xb+" "+substr(sbbh,1,30)+ryfl+" "+db
continue
enddo
go 1
i=2
@1,10 say "****************醫保數據庫 無對應記錄:******************"
@2,10 say '序號 '+'姓名 '+'性別'+' 社保編號 '+'人員分類 '+'對比提示'
locate for bj=" "
do while not eof()
i=i+1
if i>76
@1,10 say "****************醫保數據庫 無對應記錄:****************"
@2,10 say '序號 '+'姓名 '+'性別'+' 社保編號 '+'人員分類 '+'對比提示'
i=3
endif
@i,10 say str(xh,4,0)+" "+xm+xb+" "+substr(sbbh,1,30)+ryfl+" "+db
continue
enddo
go 1
i=i+1
@i,10 say "****************醫保數據庫 分類有問題:****************"
i=i+1
@i,10 say '序號 '+'姓名 '+'性別'+' 社保編號 '+'人員分類 '+'對比提示'
locate for at('?',ryfl)>0
do while not eof()
i=i+1
if i>76
@1,10 say "****************醫保數據庫 分類有問題:****************"
@2,10 say '序號 '+'姓名 '+'性別'+' 社保編號 '+'人員分類 '+'對比提示'
i=3
endif
@i,10 say str(xh,4,0)+" "+xm+xb+" "+substr(sbbh,1,30)+ryfl+" "+db
continue
enddo
count all to t
count all for bj="y" to s
count all for ryfl="在職" to zs
count all for ryfl="退休" to tx
@i+1,10 say "****醫保數據庫 正確記錄數:"+str(s,4,0)+"/"+str(t,4,0)+"/在職"+str(zs,4,0)+"/退休"+str(tx,4,0)

select 2

use lyc1_1
i=2
@1,10 say "===============校對文稿 無對應記錄:==============="
@2,10 say '序號 '+'姓名 '+'性別'+' 社保編號 '+'對比提示'
locate for bj=" "
do while not eof()
i=i+1
if i>76
@1,10 say "===============校對文稿 無對應記錄:==============="
@2,10 say '序號 '+'姓名 '+'性別'+' 社保編號 '+'對比提示'
i=3
endif
@i,10 say str(xh,4,0)+" "+xm+xb+" "+substr(sbbh,1,30)+" "+db
continue
enddo
count all to t
count all for bj="y" to s
count all for zgz > 0 to zs
count all for tgz > 0 to tx
@i+1,10 say "========校對文稿 校對正確記錄數:"+str(s,4,0)+"/"+str(t,4,0)+"/在職"+str(zs,4,0)+"/退休"+str(tx,4,0)

eject
sele 1
use
sele 2
use
set print off
set device to screen
  輸出結果

  1. 醫保數據庫 錯誤記錄:

   醫保數據庫中與校對文稿中姓名相同而社保編號不同的列入此列,同時輸出兩個社保編號提供對比

  2. 醫保數據庫 無對應記錄:

   (1) 醫保數據庫中與校對文稿中社保編號相同而姓名不同的列入此列,同時輸出兩個姓名提供對比

   (2) 醫保數據庫中與校對文稿中姓名、社保編號都對應的列入此列,對比欄為空

  3. 醫保數據庫 分類有問題:

   在職和退休分類錯的

  4. 校對文稿 無對應記錄:

   (1) 醫保數據庫中與校對文稿中姓名相同而社保編號不同的,同時輸出兩個社保編號提供對比

   (2) 醫保數據庫中與校對文稿中社保編號相同而姓名不同的,同時輸出兩個姓名提供對比

   (3) 醫保數據庫中與校對文稿中姓名、社保編號都不對應的,對比欄為空




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 琼结县| 大理市| 荔浦县| 德阳市| 隆回县| 赞皇县| 芜湖市| 永城市| 奉新县| 台中县| 东阿县| 平定县| 洞口县| 会东县| 长兴县| 盱眙县| 昆山市| 漳州市| 乌海市| 青州市| 湟源县| 涞源县| 上高县| 南召县| 开平市| 诏安县| 佛山市| 诸城市| 越西县| 喜德县| 浦北县| 安新县| 益阳市| 乐至县| 梁山县| 古蔺县| 扶绥县| 花垣县| 清流县| 乌恰县| 寻乌县|