高分跪求!! 关于数据同步,暂存表数据到正式表数据整合的存储过程

zhijuegaga 2013-10-30 02:26:25
最近在做一个事情,数据库从sybase Ase同步到sql server,主要分三个步骤:第一:数据初始化,也就是把大部分数据都bcp导出至sql server,这一步已经做完;第二步:增量数据同步,把增量数据同步至sql server,这步是通过开发的一个程序来实现的,把增量数据同步到了目标库的暂存表里(如果表名为tablename,那么暂存表名为zcun_tablename)这步也已经做完,并且暂存表里有增量数据的记录;第三步,暂存表的数据整合,通过数据的筛选最终用到生产表里,也就是这一步,没有实现,希望大侠能帮忙写个存储过程。
举个例子,比如 暂存表里,正式表叫 oiltype,那么暂存表,就叫 zcun_oiltype,若果正式表的表结构为 col_a int ,col_b int,col_c int,那么 zcun_oiltype 的表结构就为col_a int ,col_b int,col_c int,id__ varchar(2) not null,id__ numeric(16,0) not null primary key. 也就是说,暂存表比正式表多了两个字段,一个是op__,也就是增量数据的操作类型,有四种:D、I、UD、UI。D就是delete,I就是insert,而UD和UI是一对,都是为update服务的,这个update可以分两步,第一步是先delete掉要update的记录,也就是UD的操作类型,第二步就是再插入想update的记录,也就是UI的操作类型。而id__ 就是一个记录操作时间先后的数字,操作时间越靠后,ID数据值越大。
比如,暂存表里的有一条记录的op__字段的值为D,那么,我们就需要在正式表里,相应的把这条记录也delete掉;
如果暂存表里有一条济洛路的op__字段的值为I,那么,我们就需要在正式表里,把相应的记录也insert进去;
如果对一个主键相同的记录,可能有两台记录,一个是UD,一个是UI,那么意思就是先把UD的记录在正式表里删除,再把UI的记录在正式表里插入。

注意,为了保证数据库的性能,有可能一条记录被多次的insert啊,update啊之类的修改过,但是最后这条记录还是被delete掉了,那么这样的记录,实际上我们是可以忽略不计,不在正式表中做修改,直接修改最后一步delete即可,避免过多的运算。
这个逻辑大概就是这样,真心希望有大虾帮我写一个这个存储过程,跪谢了!
...全文
248 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhijuegaga 2013-10-30
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
今天忙,留个名,有空看
谢谢大虾 嘿嘿 有空一定记得帮忙看下啊 一共有200分 都给你
發糞塗牆 2013-10-30
  • 打赏
  • 举报
回复
今天忙,留个名,有空看
haitao 2013-10-30
  • 打赏
  • 举报
回复
写不大可能,讨论思路: 把反复的更新,改为串行、只增不改的日志表 然后取日志表的新记录,实现对正式表的増删改
-Tracy-McGrady- 2013-10-30
  • 打赏
  • 举报
回复
我觉得没人会帮忙写的

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧