使用Oracle作为中间件编写存储过程,实现Sql Server到MySQL的数据同步

本文介绍了如何通过在Oracle中编写存储过程,实现实时将Sql Server的数据同步到MySQL,避免直接操作甲方数据库,确保数据一致性和安全性。主要步骤包括:确定同步表、创建接收表、编写存储过程、测试及执行存储过程。
摘要由CSDN通过智能技术生成

通过使用Oracle作为中间容器编写存储过程,将Sql Server的数据实时同步到MySql,不直接在SqlServer中进行操作。

公司最近的项目要部署上线了,然后需要将甲方公司的ERP,OA,MES,PLM等系统的数据同步到我们的系统之中来,但是因为各个系统的厂家不一样有用友的ERP,致远的OA等等所以数据库有多种,Sql Server,Oracle,Mysql都有,而我们的系统使用的是Mysql,所以如何实现数据同步是个大问题。最初项目经理给出了几种方案,第一种是写定时任务定时的去取数据,第二种就是写存储过程去同步数据,无论哪种方式都需要有几个原则,首先是无论哪种方式都不可以直接在甲方公司的数据库上直接进行操作这是为了避免纠纷,第二个就是如果甲方的数据发生修改如何保证数据一致性。接下来我讲以从Sql Server同步到MySQL作为列子进行介绍。

在这里插入图片描述

1.找到需要同步的表

找到需要甲方的数据库你需要同步的表,然后确认好自己需要同步过去的数据有哪些,可以指定列可以不全部导入。
在这里插入图片描述

2.在自己的数据库中建立接收表

在自己的目标数据库中新建一张表接收数据,当然也可以不新建,如果有原始表可以将数据直接同步到原始表但是数据类型需要是一致的
在这里插入图片描述

3.编写存储过程

CREATE OR REPLACE PROCEDURE P_QUALICY_SPT IS
  V_NUM1 number;

  LI_RESULT_NO INTEGER;

  LS_RESULT_TXT VARCHAR2(255);

BEGIN
  FOR SE IN (SELECT ID,
                    CCHECKCODE,
                    CINSPECTCODE,
                    FQUANTITY,
                    FDTQUANTITY,
                    FDISBREAKQUANTITY,
                    FREGQUANTITY,
                    CSOURCE,
                    CINSPECTPERSON,
                    CDEFINE8,
                    DMAKETIME
               FROM QMCHECKVOUCHER@Spt_Ufdata_Link) LOOP
    SELECT count(1)
      INTO V_NUM1
      FROM "t_quality_spt"@spt_jzz_link
     WHERE "ID" = SE.ID;
  
    IF V_NUM1 < 1 THEN
      -- insert
      INSERT INTO "t_quality_spt"@spt_jzz_link
        ("ID",
         "CCHECKCODE",
         "CINSPECTCODE",
         
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值