当前位置: 首页 > news >正文

PL/SQL全量同步

全量同步

-- 实现逻辑:用源表的数据直接覆盖目标表
-- 插入数据前:先清空目标表,然后查询源表的数据,插入目标表

-- 1. 先创建一个目标表

CREATE TABLE EMP_T AS
SELECT 
E.*,
SYSDATE CREATE_DATE,
SYSDATE UPDATE_DATE,
SYSDATE ETL_DATE
FROM EMP E
WHERE 1=2;SELECT * FROM EMP_T;

-- 2. 创建一个来源表

CREATE TABLE EMP_S
AS
SELECT 
E.*,
SYSDATE-1 CREATE_DATE,
SYSDATE-1 UPDATE_DATE
FROM EMP E

--3. 创建一个存储过程实现数据从源表同步到目标表

CREATE OR REPLACE PROCEDURE SP_EMP_MERGE
IS
V_COUNT NUMBER;
BEGIN-- 判断表中是否有数据,如果有,则清空数据SELECT COUNT(1) INTO V_COUNT FROM EMP_T;IF V_COUNT != 0 THEN--如果行数不等于0,则说明有数据,就执行清空表的语句EXECUTE IMMEDIATE 'TRUNCATE TABLE EMP_T';END IF;-- 根据源表的结果集插入到目标表中
INSERT INTO EMP_T(
EMPNO,
ENAME,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO,
CREATE_DATE,
UPDATE_DATE,
ETL_DATE)SELECT S.EMPNO,S.ENAME,S.JOB,S.MGR,S.HIREDATE,S.SAL,S.COMM,S.DEPTNO,S.CREATE_DATE,S.UPDATE_DATE,SYSDATEFROM EMP_S S;
EXCEPTIONWHEN OTHERS THEN ROLLBACK;DBMS_OUTPUT.put_line(SQLERRM);     
END;

调用存储过程

BEGINSP_EMP_MERGE();
END;SELECT * FROM EMP_T;

-- 需要注意的是:
1. 开发规范:存储过程名,一般不超过 40个 字符长度
2. 在存储过程中,尽量不要使用通配符 * 来查询
3. 在 DML 语句中,给每张表取个别名
4. 在 执行 DML 语句之后,不要忘记了 COMMIT
5. 在全量同步的时候,先检查源表是否有数据

http://www.lryc.cn/news/187510.html

相关文章:

  • IO类型游戏研发定制开发
  • Eclipse iceoryx(千字自传)
  • 竞赛 深度学习 opencv python 公式识别(图像识别 机器视觉)
  • Pikachu靶场——跨站请求伪造(CSRF)
  • 软件测试简历项目经验怎么写?大厂面试手拿把掐
  • 图像处理与计算机视觉--第七章-神经网络-单层感知器
  • pyserial,win11,串口总是被占用
  • 网站上线如何检查?
  • 如何理解pytorch中的“with torch.no_grad()”?
  • Linux虚拟机克隆之后使用ip addr无法获取ip地址
  • 日报系统:优化能源行业管理与决策的利器
  • linux安装idea
  • vue启动项目,npm run dev出现error:0308010C:digital envelope routines::unsupported
  • vue-devtools插件安装
  • const关键字
  • HTML5+CSS3+JS小实例:仿优酷视频轮播图
  • dart的Websocket为什么找不到onOpen方法?
  • VMware中Ubuntu(Linux)无法连接网络解决办法记录
  • js结合map对象等处理数组
  • 网络攻防实战演练
  • 基于Keil a51汇编 —— 标准宏定义
  • 遍历List集合
  • k8s containerd查看镜像
  • acwing.893. 集合-Nim游戏(博弈论sg函数模板)
  • 数据安全防护:云访问安全代理(CASB)
  • 面试准备-操作系统
  • 深度学习基础知识 Batch Normalization的用法解析
  • Centos7安装MongoDB7.xxNoSQL数据库|设置开机启动(骨灰级+保姆级)
  • JDK、JRE、JVM三者之间的关系
  • 【ppt技巧】批量修改ppt中的字体