因要给另一个公司提供数据,他们用于宏观统计。
需求如下:我第一次将比如10个表的数据统一通过文件传给他们,之后每个月,这10个表发生的增删改,我要通过文件传给他,让他那边的10个表每个月跟我同步。因为数据量大,不可能整表在传一遍,只能增量当月发生的这些增删改给他,大家有没有什么好的方法,我能得到删和改的,删除有ID就行,更新就要更新的是那个字段,前后值是什么,还有增。谢谢啦

解决方案 »

  1.   

    每个表上增加last_updatetime字段,用于记录最后更新时间,
    然后,每月根据最后更新时间同步本月更新的数据给对方就行了。
      

  2.   


    --如果后期变动不是很大的话可以通过触发器来记录,变化的数据的rowid和操作方式。
    --然后每月以rowid为基础进行数据的同步
    create or replace trigger trigger_name
    after insert or update or delete
    on table_name
    for each row
    begin
      if inserting then
       insert into log_table values(:new.rowid,:new.主键,table_name,'insert',sysdate);
      elsif updating then
       insert into log_table values(:new.rowid,:new.主键,table_name,'update',sysdate);
      elsif deleting then
       insert into log_table values(:old.rowid,:new.主键,table_name,'delete',sysdate);
      end if;
    end;--这样你就可以通过 log_table 知道,什么时候 对 那个表 进行了 什么操作,涉及的行记录是什么。
    --实际上你可以直接把全部数据导出至日志表,然后最后将日志表全部传走就可以了--如果操作量很大的话,你可以按照楼上说的,在每个表里面增加一个时间字段 记录操作时间
    ----增加一个操作flag 记录操作方式(如:1 insert,2 update,3 delete),
    ----然后在程序上改动一下将这两个标识记录下来
    ----最后就可以根据这两个字段的内容进行传送处理了。