金融其它

如何处理重跑造成的重复数据删除问题

我用的是DS7.5我想在PJ里面实现,当由于数据问题或其他应用的问题,需要重跑的时候,能够先按照批量日期删除前一次跑过的数据。我每次跑都会加上批量日期,所以每次跑之前希望能够执行一个SQL(DELETE FROM ... WHERE CURR_DATE='...')判断库表中是否有重复数据(重复数据的意思是...显示全部
我用的是DS7.5
我想在PJ里面实现,当由于数据问题或其他应用的问题,需要重跑的时候,能够先按照批量日期删除前一次跑过的数据。
我每次跑都会加上批量日期,所以每次跑之前希望能够执行一个SQL(DELETE FROM ... WHERE CURR_DATE='...')判断库表中是否有重复数据(重复数据的意思是指已经有当前批量日期的数据);如果有(说明是重跑),就先删除;没有(说明第一次跑当前批量日期的数据),才进行当前处理。
但现在只能通过SJ,才能实现这种功能,因为SJ可以在ORACLE STAGE里面写BEFORE SQL,PJ其实也可以在ORACLE STAGE里面写OPEN COMMAND,但不知道为什么会报错。
另外,PJ也可以在ORACLE STAGE里面设置UPSERT模式,就是新的数据会被插入,旧的数据会被更新,但如果重跑时候新的数据比前一次跑的数据少,那么重跑之后库表中就会有垃圾数据了。
现在能想到的就是在所有作业前面都加一个专门做删除操作的作业,但这样效率也低。
各位大侠有什么好方法吗?收起
参与7

查看其它 5 个回答chenxiaoyu的回答

chenxiaoyuchenxiaoyuETL开发工程师中国农业发展银行
有谁能回答一下我的问题呢?谢谢!
金融其它 · 2012-01-07
浏览1137

回答者

chenxiaoyu
ETL开发工程师中国农业发展银行
擅长领域: 数据库

chenxiaoyu 最近回答过的问题

回答状态

  • 发布时间:2012-01-07
  • 关注会员:1 人
  • 回答浏览:1137
  • X社区推广