如何进行异构数据库同步(下篇)

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 01:21 点击:

 

1详细设计

1.1 SQL语句通用解析程序

首先需要一个通用的“SQL语句通用解析程序”,因为异构数据库的大部分表都与另外的表有一一对应的关系,该解析程序用于对这些一一对应的表进行处理。

表与表之间的对应关系基于上篇提到的整理的Excel文档,“SQL语句通用解析程序”如何读取对应关系对收到的INSERT、UPDATE和DELETE语句进行处理呢?笔者采用的是将对应关系写入XML文档中,当然也可以采用另外的方式。

参考XML格式如下(Oracle 新系统->  SQL Server旧系统):

<table name="freephone" partyName="PLAT_FreePhone" fieldCount="8">
     <field name="Phone" partyName="Phone" primary="true" />
     <field name="ProductID" type="varchar" partyName="ProductID" partyType="int" />
  <field name="AreaId" partyName="" />
     <field name="Effect" partyName="" />
     <field name="EffectLess" partyName="" />
     <field name="Addtime" type="varchar" partyName="AddTime" partyType="datetime" partyValue/>
     <field name="Operator" partyName="Operator" />
     <field name="Remark" partyName="Remark" />
 </table>

当一方对freephone表操作的INSERT语句:

insert into freephone (Phone, ProductID, AreaId, Effect, EffectLess, Addtime, Operator, Remark)values(‘13122223333’,‘003’,25,‘20110724000000’,‘20111024235959’,‘20110702409000000’, ‘amigo’, ‘amigo add!’)

根据上面XML配置和通用解析程序的处理,对应对方的新的SQL语句为:

INSERT INTO PLAT_FreePhone(Phone, ProductID, AddTime, Operator, Remark) values(‘13122223333’, 3, GETDATE(), ‘amigo’, ‘amigo add!’)

再看一条UPDATE语句:

update freephone set ProductID=’004’, AreaId=26 where Phone=’13122223333

转换为对方的语句为:

update PLAT_FreePhone set ProductID=4 where Phone=’13122223333

另外除了如上所演示的简单的类型不同、字段名称不同,有些字段在对方没有外,有时候有些字段还需要一定的转换,例如在一方存储的limited字符串是二进制方式,例如111111,而对方存储的是二进制对应的十进制的值,再例如,一方存储的是6位的时间(时分秒),而对方存储的只是4位的时间(时分),那么可做一次自定义的substr操作。

看另一个参考的XML实例:

<table name="phonelimited" partyName="PLAT_PhoneLimited" fieldCount="6">
    <field name="Phonenumber" partyName="Phone" primary="true" />
    <field name="AreaId" type="int" partyName="AreaID"&nb

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • sql常见面试题
    • SQL SERVER 2005性能之跟踪
    • SQL编程(一)
    • LINUX上RMAN自动备份脚本
    • sql server面试题
    • 如何将多个SQL查询统计结果一次显示出来
    • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
    • SQL小技巧系列 --- 行转列合并
    • sql server 列转行
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1