还是之前那个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 {} \;
完成后所有记录字段均以"│"为分隔符,同时以行为记录 单位重新整理。
剩下的工作就简单多了,如果要移植到其他数据库,按 文本格式进行处理就行了。
时间: 2024-12-22 07:20:27