请教,如何实现动态定义QUERY
需求:我们系统在做新旧系统并行测试,需要比较新旧两个LIB中所有同名数据库的比较,找到新旧数据库不相同的记录。
类似WRKQRY中定义qry比较两个数据库的unmatch记录,但由于数据库较多,不可能一个个静态定义,需要动态产生。
请教一下。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
N个FileA和N个FileB,如果index不一样,或keys在记录中的位置不一样,动态的query是不存在的,用*nocheck也不能用。
如果有相同key,可以用rpg的cycle+程序描述file来做,速度是你意想不到的快。
否则,用非存在的query,即使用时再创建query,对一个几十个G的file来说,也是较慢的。
这个似乎没有更好的办法
用WRKQRY比较吧,是个体力活
其实也很快的,1000个PF的话,3,4个人一起做,也就一天左右
做好了把QRY保存好,防止下次再用哈哈
FileA和FileB有相同的KEY,但问题是我要比较的是N个FileA和N个FileB,我需要一个通用的工具来比较,其实用WRKQRY来比较两个库,找出非交集部分的效率还是蛮高的,千万记录的数据库10多分钟可以完成。问题在于我不知道怎样动态定义QUERY,因此无法通用。
对sql不太熟悉 这种东西还是写个程序比较好
本帖最后由 passthru 于 2011-01-18 10:29 编辑
如果比较FileA和FileB,且FileA和FileB都是大数据PF。问:这两个File是否有Key?或有相同键字的LF?
如果用sql,对大数据pf进行比较,又select * not in,花费时间不是一般的长,要按天来计算吧?这样的算法,相当于FileA是IP,FileB是IS;FileA要遍历一次;FileB要遍历FileA记录数xFileB记录数,too large,waste time.
楼上larkin9527大侠的办法,我想不到如何通过SQL命令实现不在对方存在的记录?还请请详细说明一下实现过程。谢谢
本帖最后由 MUSIC168 于 2011-01-18 08:54 编辑
感谢楼上passthru大侠,补充一下问题:
1)不是源码库,是数据库
2)PF的记录数不定,大的有几千万条记录,几十个G
我自己想了了一个办法,比较笨,但对付大的数据库不好。我觉得不好,还请高手帮想个办法,不要数据复制的。
我的办法:弄两个临时库,只有一个字段,记录长度1024BYTES,分别将两个需要的比较的数据库CPYF到这两个临时库当中,CPYF命令参数*NOCHK,再用两次SQL命令select * not in,找出不在对方的记录。
进一步想了解的问题:
1)是否源码库,即pf-src?
2)如果是数据库,即dta-pf,最大pf的记录有多少条?size有多大?
可以先根据数据文件的format搭建比较的sql语句,再用STRQMQRY去执行这些比较语句。