我要定时扫描、读取一个文件(文件的内容是财务系统下发的各部门及分公司预算条目),将读取的信息插入数据库。插入数据库这个我已经实现,现在需求有效改动:就是下发的预算可能发生变动(可能是预算金额变动),如果发生了变动(举例来说,前一次下发的预算有A、B、C三条; 这次下发的预算是A、B、D、E 四条;并且其中的预算条目 A 的预算金额较前一次发生了变动)。    我在扫描后,要将我们系统数据库里的预算信息与新下发的预算信息,进行同步。我想问一下,这个大体的处理步骤是怎样的?我现在的想法是:先建一个临时表,每次扫描信息插入这个表前,先将表里的数据清空;然后再插入信息。数据插入后,再和我们系统存放的预算信息表进行对比,还是用上面的A、B、C、D、E来说明:
   新的预算中没有C,那么我们讲把我们库里C这条的预算金额更新为0;
   新的预算中多了D、E,那么我们将插入D、E到我们的预算表;
   新的预算中A的金额发现了变化,那么我们将对A作更新操作。如何对比,我想在还没想好,各位有处理过此类问题的,可以给指点一下。

解决方案 »

  1.   

    使用merge時,match可以解決A的update;not match可以解決D、E的insert;C要單獨處理delete
      

  2.   


    这个正确。
    先merge,然后考虑delete
      

  3.   

    merge ....可以具体一些吗?我先到网上找点资料来学习
      

  4.   

    汗,你不是直接delete再全量insert不就可以了。
    你的需求根本不是比较,而是要同步成最新的预算,那就直接全量更新就行了。
      

  5.   


    你确定看明白了上面的内容?如果第一次有A,我们系统用了A这条预算,第二次没有了A。按照你的说法,全部delete,然后还有A吗
      

  6.   


    还怎么具体merge本身就不是什么难的东西。