快速业务通道

linux shell vim处理不同数据库文本之间的转换

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-03
作者:张宇,北亚服务器数据恢复中心,转载请联系作者,如果实在不想联系作者,至少请保留版权,谢谢. 还是之前那个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 {} ; 完成后所有记录字段均以"│"为分隔符,同时以行为记录单位重新整理. 剩下的工作就简单多了,如果要移植到其他数据库,按文本格式进行处理就行了.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号