客户要求提供一个简单快捷的生产数据库数据对比工具。
两个不同模块数据库中的372万条记录是否一致。
第一反应是表关联查询对比,但是易用性较低,执行者需要链接数据操作。
同时需要技术人员远程支持客户操作,并且出错需要跟进分析,很麻烦,偏偏我又是个怕麻烦的人。
因此考虑将数据导出进行比较,通过SPOOL可以将数据进行格式化导出为TXT文件。
因此感觉最好解决方案自然是Shell脚本,一键执行导出数据并进行对比,生成对比结果。
Comm命令可以用于两个文件之间的比较,它有一些选项可以用来调整输出,以便执行交集、求差、以及差集操作。
comm [-参数] (文件1) (文件2)
如果不指定参数,输出结果会有三列。
Comm命令比较的时候最好是有序的文件。
有序的文件就是指文件中的内容第一个字符最好是经过排序的,否则输出结果会让你惊喜无比。
虽然可以通过组合命令完成无序文件的对比,但是易出错,分析太麻烦,偏偏我又是个怕麻烦的人(再次,摊手)。
对于我收到的诉求,我在SPOOL命令查询记录的时候,就顺手在SQL中sort了一下。
为了便于Shell脚本的使用,Comm 命令在实际应用中会组合参数使用。
#不显示mebugs.log中出现的内容,不显示两者均出现的内容
#组合结果:显示com.log文件中与mebugs.log差异的内容
comm -23 mebugs.log com.log
对于大文件对比的时候建议将差异结果输出到新的文件中。
#利用重定向将结果输出保存下来,便于Shell脚本取用
comm -23 mebugs.log com.log > mebugsDiffCom.log
comm -13 mebugs.log com.log > sobestDiffCom.log
当前还没有观点发布,欢迎您留下足迹!
Linux系统一般情况下启动默认只加载系统盘,支持其他磁盘自由热插拔,如果发现自己的某些目录找不见了的时候不要慌看看是不是没有设置开机启动自动加载挂载磁盘内容,另外要特别注意首次安装系统记得磁盘挂载操作
Linux服务器测试环境或正式生产环境常常设计一些定时例行处理的操作,如日记备份转移清理等,利用Crontab+Shell脚本组合实现定期定时操作,确保不会应工作繁忙忘记任务导致环境异常
awk,一种处理文本文件的语言,强大的文本分析工具。取三位创始人Alfred Aho、Peter Weinberger和Brian Kernighan的Family Name的首字符
项目上的开发和测试环境非常多,少则数十多则上百,实际工作中实在懒得来回登录或打开各个环境,最好的方案就是给内网环境间添加一下信任关系,便于快速在环境之间切换,免去输入密码的烦恼
expect脚本由一系列expect-send对组成,等待输出中输出特定的字符,通常是一个提示符,然后发送特定的响应,特别适用于需要批量手动输入命令的自动化操作改造
Shell脚本循环读取文件常用的方案有输入重定向和管道操作,循环形式有while和for两种,具体的使用或搭配看个人习惯,个人尚未对命令进行性能验证