還是之前那個XENIX系統,作為某地公安部門的戶籍查詢與管理系統,記錄的 是50多萬人口的基本信息。這套系統是1989年開發的,當時並未用標准的數據庫 理念設計(未設計兼容性),只允許查詢,打印,或生成輸出文本,輸出文本的結 果大致如下:
參考附件示例中的結構,對這些文本文件 通過VIM(或VI),再加上SHELL腳本,將其組織成為標准數據庫的可錄入格式:
先編個腳本,暫起名為m.sh
內容如下:
#從腳本命令行中 獲取要操作的文件路徑
vi $1<<end >&/dev/null
#替換所有^M換行符(變成LINUX下的標准換行 符)
:%s/\r//g
#刪除記錄之間的表格行
:g/^.─.*/d
#在記錄號前面加上分隔符, 以求後面處理統一
:%s/記錄號:/│記錄號:/g
#去掉一條記錄中間的斷 行,這樣,一條記錄就只占用一行空間
:%s/\n[^$]/│/
#刪除第00000號記錄,本記錄是無用的
:g/記錄號: 00000/d
#刪除 表頭統計說明
:g/公 安 人 口 信 息 管 理 系 統/d
#去掉 多余的空格與字段分隔符
:%s/\s*││*\s*/│/g
#刪除記錄前綴,比如“姓名:張三”變成“張三”
:%s/│[^│][^│]*:\s*/│/g
#刪除行首與行尾的字段分隔符
:%s/^│\s*//g
:%s/│$//g
:wq
end
將上述腳本保存後,在存放導出.TXT文件的路徑 下執行:
find . -maxdepth 1 -name "*.txt" -exec ./m.sh {} \;
完成後所有記錄字段均以"│"為分隔符,同時以行為記錄 單位重新整理。
剩下的工作就簡單多了,如果要移植到其他數據庫,按 文本格式進行處理就行了。