-- 数据同步

1 全量数据同步

1.1 不带参数的实现方式

每次更新目标表的时候,先把目标表中的数据清空,然后用源表的数据插入目标表中 。

1.2 通过参数 ,会计期(一个会计期 = 1个月 ,格式为 年-月 )更新目标表的部分数据 ,对会计期内的数据 进行全量的更新

每次更新,只更新目标表最近一个会计期的数据 ,

更新之前先根据 参数 删除 会计期 内的数据,然后查询源表会计期的数据插入到目标表中。

2 增量数据同步

2.1 不带参数的实现方式

更新目标表之前,会判断 源表的数据在目标表中是否存在

存在 则用源表的数据 更新 目标表中的数据。

不存在 那么直接将源表的数据 插入到 目标表中 。

2.2 使用参数的切片全量 ,使用参数 实现 只更新表切片的数据 不做全表的增量同步 。

更新目标表之前,会判断 源表的 切片的范围内的 数据 在目标表 切片的范围内 是否存在

存在 则用源表的数据 更新 目标表中的数据。

不存在 那么直接将源表的数据 插入到 目标表中 。

-------------------------------------- 增量的方式更新 EMP_BAK

增量同步有2种方式实现:

1 游标 CURSOR

2 MERGE INTO

----------- 游标 CURSOR 实现

CREATE OR REPLACE PROCEDURE SP_EMP_BAK_CURSOR

IS

-- 先定义一个游标 指向 源表的结果

CURSOR C_EMP IS SELECT * FROM EMP ;

V_CT NUMBER(4) ;

BEGIN

-- 通过循环 从游标中取数

FOR X IN C_EMP LOOP

-- 循环内 通过条件控制判断 源表的数据 在 目标表中 是否存在

SELECT COUNT(*) INTO V_CT FROM EMP_BAK WHERE EMPNO = X.EMPNO ;

-- V_CT 的结果 只会等于 1 或者 0 , 1 表示存在, 0 不存在。

-- 判断 目标表的数据在 源表中是否存在

IF V_CT = 1 THEN

UPDATE EMP_BAK M

SET

M.ENAME = X.ENAME,

M.JOB = X.JOB,

M.MGR = X.MGR,

M.HIREDATE = X.HIREDATE,

M.SAL = X.SAL,

M.COMM = X.COMM,

M.DEPTNO = X.DEPTNO,

M.DATA_DATE = SYSDATE

WHERE M.EMPNO = X.EMPNO ;

-- 判断 目标表中 在 源表数据 不存在 ,则 插入

ELSIF V_CT = 0 THEN

INSERT INTO EMP_BAK

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, DATA_DATE)

VALUES

(X.EMPNO,

X.ENAME,

X.JOB,

X.MGR,

X.HIREDATE,

X.SAL,

X.COMM,

X.DEPTNO,

SYSDATE);

END IF ;

END LOOP ;

COMMIT ;

END SP_EMP_BAK_CURSOR;

--------- 调用存储过程

BEGIN

SP_EMP_BAK_CURSOR;

END ;

SELECT * FROM EMP_BAK ;

--------------- MERGE INTO 实现

CREATE OR REPLACE PROCEDURE SP_EMP_BAK_MERGE

IS

BEGIN

MERGE INTO EMP_BAK M -- 目标表

USING (SELECT *FROM EMP ) X -- 源表

ON (M.EMPNO = X.EMPNO) -- 比较字段

WHEN MATCHED THEN -- 当匹配字段 找到相同的数据 则更新

UPDATE SET -- 这里的 UPDATE SET 之间没有 表名

M.ENAME = X.ENAME,

M.JOB = X.JOB,

M.MGR = X.MGR,

M.HIREDATE = X.HIREDATE,

M.SAL = X.SAL,

M.COMM = X.COMM,

M.DEPTNO = X.DEPTNO,

M.DATA_DATE = SYSDATE

WHEN NOT MATCHED THEN -- 当匹配字段 找 不 到相同的数据 则插入

-- 这里的 INSERT 没有 INTO

INSERT (M.EMPNO ,

M.ENAME ,

M.JOB ,

M.MGR ,

M.HIREDATE ,

M.SAL ,

M.COMM ,

M.DEPTNO ,

M.DATA_DATE )

VALUES(

X.EMPNO ,

X.ENAME ,

X.JOB ,

X.MGR ,

X.HIREDATE ,

X.SAL ,

X.COMM ,

X.DEPTNO ,

SYSDATE );

COMMIT ;

END SP_EMP_BAK_MERGE ;

---------------- 调用

BEGIN

SP_EMP_BAK_MERGE ;

END ;

SELECT * FROM EMP_BAK FOR UPDATE ;

TRUNCATE TABLE EMP_BAK

-- 数据同步

1 全量数据同步

1.1 不带参数的实现方式

每次更新目标表的时候,先把目标表中的数据清空,然后用源表的数据插入目标表中 。

1.2 通过参数 ,会计期(一个会计期 = 1个月 ,格式为 年-月 )更新目标表的部分数据 ,对会计期内的数据 进行全量的更新

每次更新,只更新目标表最近一个会计期的数据 ,

更新之前先根据 参数 删除 会计期 内的数据,然后查询源表会计期的数据插入到目标表中。

2 增量数据同步

有一个目标表 EMP_BAK 字段名称跟 EMP表一样 .

为了方便检查,需要在目标表中 添加 审计字段 DATA_DATE ,LAST_UPDATE_DATE

ALTER TABLE EMP_BAK ADD DATA_DATE DATE ;

--------------------------- 全量数据同步 ----------------------

/*需求 :通过存储过程 全量更新 EMP_BAK */

CREATE OR REPLACE PROCEDURE SP_EMP_BAK

IS

BEGIN

-- 先清空目标表的数据 ,为了支持 重跑

DELETE FROM EMP_BAK WHERE 1 = 1 ;

-- 然后 将源表 EMP 的数据 插入到 目标表 EMP_BAK 中

INSERT INTO EMP_BAK

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, DATA_DATE)

SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SYSDATE

FROM EMP;

COMMIT;

END SP_EMP_BAK;

------- 调用存储过程

BEGIN

SP_EMP_BAK;

END ;

SELECT * FROM EMP_BAK;

---------------- 比如 我想一次更新 某一年的数据

CREATE OR REPLACE PROCEDURE SP_EMP_BAK_Y( P_YEAR VARCHAR2)

IS

BEGIN

-- 先清空目标表的数据 ,为了支持 重跑

DELETE FROM EMP_BAK WHERE TO_CHAR(HIREDATE,'YYYY') = P_YEAR ;

-- 然后 将源表 EMP 的数据 插入到 目标表 EMP_BAK 中

INSERT INTO EMP_BAK

(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, DATA_DATE)

SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, SYSDATE

FROM EMP

WHERE TO_CHAR(HIREDATE, 'YYYY') = P_YEAR;

COMMIT;

END SP_EMP_BAK_Y;

------- 调用存储过程

BEGIN

SP_EMP_BAK_Y('1987');

END ;

SELECT * FROM EMP_BAK ;

-------------------------------------

全量同步 适合数据量不大的小表的更新 。

一般针对 百万行数据以内的小表 我们采用全量方式 ,超过百万以上的表 我们都用 增量的方式更新 。

因为这种方式 准确率非常高。

但是对于大表而言 直接删除表的数据 风险太大 。

于是有了 切片全量 更新方式 ,可以大大提高全量的更新效率,并且可以避免对整张表的操作 。

--

练习1:

/*编写存储过程,更新目标表的数据 目标表字段包括: 部门编号 ,

部门名称,部门人数,部门的平均工资

1 以全量同步的方式更新目标表 ,各部门的数据;*/

create table emp_bak3

as

select e.deptno ,

d.dname ,

count(e.empno)over(partition by e.deptno) AS "CT_EMPNO",

avg(e.sal) over(partition by e.deptno) AS "AVG_SAL",

SYSDATE AS "DATA_DATE"

from emp e

join dept d

on e.deptno = d.deptno

WHERE 1 = 2 ;

---- 创建 SP

CREATE OR REPLACE PROCEDURE SP_EMP_BAK3 IS

BEGIN

DELETE FROM EMP_BAK3 WHERE 1 = 1;

INSERT INTO EMP_BAK3(DEPTNO,

DNAME,

CT_EMPNO,

AVG_SAL,

DATA_DATE)

SELECT E.DEPTNO, D.DNAME, COUNT(E.EMPNO), ROUND(AVG(E.SAL),2), SYSDATE

FROM EMP E

JOIN DEPT D

ON E.DEPTNO = D.DEPTNO

GROUP BY E.DEPTNO, D.DNAME;

COMMIT;

END SP_EMP_BAK3;

--- 调用

BEGIN

SP_EMP_BAK3;

END;

select * from emp_bak3;

/* 2 以部门编号为参数 切片全量更新 目标表 的数据 ;*/

CREATE OR REPLACE PROCEDURE SP_EMP_BAK_3(P_DEPTNO NUMBER) IS

BEGIN

DELETE FROM EMP_BAK3 WHERE DEPTNO = P_DEPTNO;

INSERT INTO EMP_BAK3

(DEPTNO, DNAME, CT_EMPNO, AVG_SAL, DATA_DATE)

SELECT E.DEPTNO, D.DNAME, COUNT(E.EMPNO), ROUND(AVG(E.SAL), 2), SYSDATE

FROM EMP E

JOIN DEPT D

ON E.DEPTNO = D.DEPTNO

WHERE E.DEPTNO = P_DEPTNO

GROUP BY E.DEPTNO, D.DNAME;

COMMIT;

END SP_EMP_BAK_3;

BEGIN

SP_EMP_BAK_3(10);

END;

SELECT * FROM EMP_BAK3;

练习2

----编写存储过程,更新目标表的数据 目标表字段包括: 部门编号 ,部门名称,部门人数,部门的平均工资

---1 以增量同步的方式更新目标表 ,各部门的数据;

select * from emp_bak3

CREATE OR REPLACE PROCEDURE SP_EMP_BAK3_CURSOR IS

-- 定义游标 查询取数的源表的结果集

CURSOR C_EMP IS

SELECT D.DEPTNO , D.DNAME , COUNT(E.EMPNO) CT , AVG(E.SAL) AVG_SAL

FROM EMP E, DEPT D

WHERE E.DEPTNO = D.DEPTNO

GROUP BY D.DEPTNO , D.DNAME ;

-- 定义所需变量

V_CT NUMBER(4); -- 员工的人数

BEGIN

FOR X IN C_EMP LOOP

SELECT COUNT(*) -- 统计目标表中的部门 /数据 在源表中是否存在 ,返回 1 或者 0

INTO V_CT -- 将统计结果 赋值给 变量

FROM EMP_BAK3 -- 查询目标表

WHERE DEPTNO = X.DEPTNO; -- 判断 目标表中的部门/数据 在源表中是否存在

--- 判断 如果 部门编号 在源表的结果集中存在 那么则 更新

IF V_CT = 1 THEN

UPDATE EMP_BAK3 M

SET M.DNAME = X.DNAME, -- 部门名称

M.CT_EMPNO = X.CT , -- 部门人数

M.AVG_SAL = X.AVG_SAL, -- 部门的平均工资

M.DATA_DATE = SYSDATE -- 审计字段

WHERE M.DEPTNO = X.DEPTNO; -- 比较字段 ,条件

--- 判断 如果 部门编号 在源表的结果集中 不存在 那么则 更新

ELSIF V_CT = 0 THEN

INSERT INTO EMP_BAK3

( DEPTNO, -- 部门编号

DNAME , -- 部门名称 EPTNO

CT_EMPNO, -- 部门人数

AVG_SAL, -- 部门的平均工资

DATA_DATE -- 审计字段

)

VALUES

( X.DEPTNO /*部门编号*/

, X.DNAME /*部门名称 EPTNO*/

, X.CT /*部门人数*/

, X.AVG_SAL /*部门的平均工资*/

, SYSDATE); /*审计字段*/

END IF;

END LOOP;

COMMIT;

END SP_EMP_BAK3_CURSOR;

-- 调用

BEGIN

SP_EMP_BAK3_CURSOR ;

END ;

SELECT * FROM EMP_BAK3;

--2 以部门编号为参数 切片增量更新 目标表 的数据 ;

CREATE OR REPLACE PROCEDURE SP_EMP_BAK3_CURSOR_1 (p_deptno number)

IS

-- 定义游标 查询取数的源表的结果集

CURSOR C_EMP IS

SELECT D.DEPTNO , D.DNAME , COUNT(E.EMPNO) CT , AVG(E.SAL) AVG_SAL

FROM EMP E, DEPT D

WHERE E.DEPTNO = D.DEPTNO

AND E.DEPTNO = p_deptno

GROUP BY D.DEPTNO , D.DNAME ;

-- 定义所需变量

V_CT NUMBER(4); -- 员工的人数

BEGIN

FOR X IN C_EMP LOOP

SELECT COUNT(*) -- 统计目标表中的部门 /数据 在源表中是否存在 ,返回 1 或者 0

INTO V_CT -- 将统计结果 赋值给 变量

FROM EMP_BAK3 -- 查询目标表

WHERE DEPTNO = X.DEPTNO; -- 判断 目标表中的部门/数据 在源表中是否存在

--- 判断 如果 部门编号 在源表的结果集中存在 那么则 更新

IF V_CT = 1 THEN

UPDATE EMP_BAK3 M

SET M.DNAME = X.DNAME, -- 部门名称

M.CT_EMPNO = X.CT , -- 部门人数

M.AVG_SAL = X.AVG_SAL, -- 部门的平均工资

M.DATA_DATE = SYSDATE -- 审计字段

WHERE M.DEPTNO = X.DEPTNO; -- 比较字段 ,条件

--- 判断 如果 部门编号 在源表的结果集中 不存在 那么则 更新

ELSIF V_CT = 0 THEN

INSERT INTO EMP_BAK3

( DEPTNO, -- 部门编号

DNAME , -- 部门名称 EPTNO

CT_EMPNO, -- 部门人数

AVG_SAL, -- 部门的平均工资

DATA_DATE -- 审计字段

)

VALUES

( X.DEPTNO /*部门编号*/

, X.DNAME /*部门名称 EPTNO*/

, X.CT /*部门人数*/

, X.AVG_SAL /*部门的平均工资*/

, SYSDATE); /*审计字段*/

END IF;

END LOOP;

COMMIT;

END SP_EMP_BAK3_CURSOR_1;

-- 调用

BEGIN

SP_EMP_BAK3_CURSOR_1(10) ;

END ;

SELECT * FROM EMP_BAK3;

----创建存储过程并记录日志,增量同步员工的 姓名,入职时间,工资,岗位,部门名称,部门地址,司龄

----分别以 全表增量 和 表的切片增量 方式实现 。

drop table emp_bak4

create table emp_bak4 as

select e.ename,e.hiredate,e.sal,e.job,d.dname,d.loc,

trunc(months_between(sysdate,hiredate)/12) as "TR_SL",

sysdate as "DATA_DATE"

from emp e

join dept d

on e.deptno = d.deptno

WHERE 1 =2 ;

select * from emp_bak4

---全表增量

CREATE OR REPLACE PROCEDURE SP_EMP_BAK4_MERGE IS

BEGIN

MERGE INTO EMP_BAK4 A

USING (SELECT E.ENAME,

E.HIREDATE,

E.SAL,

E.JOB,

D.DNAME,

D.LOC,

TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE) / 12) AS "TR_SL",

SYSDATE AS "DATA_DATE"

FROM EMP E

JOIN DEPT D

ON E.DEPTNO = D.DEPTNO) B

ON (A.ENAME = B.ENAME)

WHEN MATCHED THEN

UPDATE

SET A.HIREDATE = B.HIREDATE, -- 入职日期

A.SAL = B.SAL, -- 工资

A.JOB = B.JOB, -- 岗位

A.DNAME = B.DNAME, -- 部门名称

A.LOC = B.LOC, -- 地址

A.TR_SL = B.TR_SL, -- 司龄

A.DATA_DATE = SYSDATE -- 审计字段 ,数据更新时间

WHEN NOT MATCHED THEN

INSERT

(ENAME, -- 姓名

HIREDATE, -- 入职日期

SAL, -- 工资

JOB, -- 岗位

DNAME, -- 部门名称

LOC, -- 地址

TR_SL, -- 司龄

DATA_DATE) -- 审计字段 ,数据更新时间

VALUES

(B.ENAME, -- 姓名

B.HIREDATE, -- 入职日期

B.SAL, -- 工资

B.JOB, -- 岗位

B.DNAME, -- 部门名称

B.LOC, -- 地址

B.TR_SL, -- 司龄

SYSDATE); -- 审计字段 ,数据更新时间

COMMIT;

END SP_EMP_BAK4_MERGE;

-- 调用

BEGIN

SP_EMP_BAK4_MERGE ;

END ;

SELECT * FROM EMP_BAK4;

---切片增量

CREATE OR REPLACE PROCEDURE SP_EMP_BAK4_MERGE_1( P_DNAME VARCHAR2) IS

BEGIN

MERGE INTO EMP_BAK4 A

USING (SELECT E.ENAME, --

E.HIREDATE, --

E.SAL, --

E.JOB, --

D.DNAME, --

D.LOC, --

TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE) / 12) AS "TR_SL", --

SYSDATE AS "DATA_DATE"

FROM EMP E

JOIN DEPT D

ON E.DEPTNO = D.DEPTNO

WHERE D.DNAME = P_DNAME ) B

ON (A.ENAME = B.ENAME)

-- 此处有注释

WHEN MATCHED THEN

UPDATE

SET A.HIREDATE = B.HIREDATE, -- 入职日期

A.SAL = B.SAL, -- 工资

A.JOB = B.JOB, -- 岗位

A.DNAME = B.DNAME, -- 部门名称

A.LOC = B.LOC, -- 地址

A.TR_SL = B.TR_SL, -- 司龄

A.DATA_DATE = SYSDATE -- 审计字段 ,数据更新时间

-- 此处有注释

WHEN NOT MATCHED THEN

INSERT

(ENAME, -- 姓名

HIREDATE, -- 入职日期

SAL, -- 工资

JOB, -- 岗位

DNAME, -- 部门名称

LOC, -- 地址

TR_SL, -- 司龄

DATA_DATE) -- 审计字段 ,数据更新时间

VALUES

(B.ENAME, -- 姓名

B.HIREDATE, -- 入职日期

B.SAL, -- 工资

B.JOB, -- 岗位

B.DNAME, -- 部门名称

B.LOC, -- 地址

B.TR_SL, -- 司龄

SYSDATE); -- 审计字段 ,数据更新时间

COMMIT;

END SP_EMP_BAK4_MERGE_1;

-- 调用

BEGIN

SP_EMP_BAK4_MERGE_1('SALES') ;

END ;

SELECT * FROM EMP_BAK4;

--作业

  • 销售商表

  • 销售商类型字典

  • 客户信息表,客户类型字典:0-机构,1-个人,2-产品

  • 交易账号表结构

  • 资金方式字典

名称

1

普通方式

4

工行网银

6

汇付天下

A

农行网银

AD

民生代收付

AL

浦发受托支付

AV

银银平台

AW

招赢通

B

建行网银

C

交行网银

G

招行网银

K

网下转账

M

通联

N

中行网银

  • 交易信息表

  • 新的销售商分类规则如下:

代销(销售商编号非244)

银行

券商

第三方(代销除银行券以外全为第三方)

直销(销售商编号为244)

机构直销(直销渠道客户类型为机构或产品)

电商直销(直销渠道客户类型为个人,且交易账号资金方式为非[普通]方式)

柜台零售直销(直销渠道客户类型为个人,且交易账号资金方式为[普通]方式)

其它直销(直销渠道且交易账号资金方式为招赢通)

新的销售商分类字典如下:

名称

1

银行

2

券商

3

第三方

4

机构直销

5

电商直销

6

柜台零售直销

7

其它直销

题目:

请写出一个带参函数,用于将交易信息表中的交易按新的销售商分类进行归类,函数返回新的分类值。

从 表 (多张表) 中根据 销售商的编码 以及 销售商分类 (0 ,1,2,3,4 .. )

按照新的分类规则 返回新的 分类编号/值

-- SQL实现

SELECT

CASE /*代销业务 包含 银行 券商 第三方*/

WHEN B.销售商的编码 != '244' AND B.销售商类型 = '0' THEN '1'

WHEN B.销售商的编码 != '244' AND B.销售商类型 = '1' THEN '2'

WHEN B.销售商的编码 != '244' AND B.销售商类型 NOT IN ('0' ,'1') THEN '3'

/*直销业务 包含 机构 电商 柜台 其他 */

WHEN A.销售商的编码 = 244 THEN

CASE WHEN D.资金方式 = 'AW' THEN '7'

WHEN C.客户类型 IN (0 ,2) THEN '4'

WHEN C.客户类型 = 1 AND D.资金方式 != '1' THEN '5'

WHEN C.客户类型 = 1 AND D.资金方式 = '1' THEN '6'

ELSE '新业务_NULL'

END

ELSE '新业务_NULL'

END

INTO V_N_分类

FROM 交易信息表 A, 销售商表 B , 客户信息表 C , ,交易账号表 D -- 销售商字典 和 资金方式

WHERE A.客户编号 = C.客户编号

AND A.销售商编号 = B.销售商编号

AND A.交易账号 = D.交易账号

AND A. 客户编号 = P_客户编号

AND A.销售商编号 = P_销售商编号

AND A.交易账号 = P_交易账号 ;

---------------- 通过自定义函数实现

CREATE OR REPLACE FUNCTION FUN_新销售商分类(P_客户编号 VARCHAR2 ,

P_销售商编号 VARCHAR2

P_交易账号 VARCHAR2)

RETURN VARCHAR2

V_N_分类 VARCHAR2(5) ;

IS

BEGIN

SELECT

CASE /*代销业务 包含 银行 券商 第三方*/

WHEN B.销售商的编码 != '244' AND B.销售商类型 = '0' THEN '1'

WHEN B.销售商的编码 != '244' AND B.销售商类型 = '1' THEN '2'

WHEN B.销售商的编码 != '244' AND B.销售商类型 NOT IN ('0' ,'1') THEN '3'

/*直销业务 包含 机构 电商 柜台 其他 */

WHEN A.销售商的编码 = 244 THEN

CASE WHEN D.资金方式 = 'AW' THEN '7'

WHEN C.客户类型 IN (0 ,2) THEN '4'

WHEN C.客户类型 = 1 AND D.资金方式 != '1' THEN '5'

WHEN C.客户类型 = 1 AND D.资金方式 = '1' THEN '6'

ELSE '新业务_NULL'

END

ELSE '新业务_NULL'

END

INTO V_N_分类

FROM 交易信息表 A, 销售商表 B , 客户信息表 C , 交易账号表 D -- 销售商字典 和 资金方式

WHERE A.客户编号 = C.客户编号

AND A.销售商编号 = B.销售商编号

AND A.交易账号 = D.交易账号

AND A. 客户编号 = P_客户编号

AND A.销售商编号 = P_销售商编号

AND A.交易账号 = P_交易账号 ;

RETURN V_N_分类 ;

END FUN_新销售商分类 ;

--作业另外:

笔试题

Part1:sql语言

题目一:

表C数据如下(列c1,c2), 请编写SQL转换为下面输出格式:

SQL语句:

题目二:

客户信息表【Customer】:

CUST_ID(客户号),CUST_NAME(客户姓名),DEPT(营业部)

委托表【Orders】:

CUST_ID(客户号),ORDERID(委托编号),ORDER_SECU(股票代码);ORDER_NUM(委托数量),ORDER_PRICE(委托价格),ORDER_DATE(委托时间)

请完成以下查询:

1、查询今天所有进行过委托的客户名单,按以下格式:

格式:客户号客户名称

2、查询当天第一笔委托的客户及最后一笔委托的客户,按以下格式:

格式:第一笔委托客户名称 第一笔委托时间 最后一笔委托客户名称 最后一笔委托时间

3、查询每个客户今天委托股票的均价,按以下格式显示:

格式:客户名称 股票代码 委托均价

4、查询所有客户当中委托股票金额最大的前五支股票,按以下格式显示:

格式:排名 股票代码 委托金额

题目三:

写一个存储过程Proc_ab,实现:1)用truncate语句清空B表;2)取A表中按照客户号汇总的成交金额插入到B表

表:A (cust_no客户号 ,match_amt成交金额)

表:B (cust_no客户号 ,match_amt_total成交金额汇总)

331全量增量数据、同步ld相关推荐

  1. hbase集群 数据写入_Hbase实用技巧:全量+增量数据的迁移方法

    摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...

  2. Hbase实用技巧:全量+增量数据的迁移方法

    摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...

  3. 全量增量数据同步方法(Hive date_add date_sub)

    全量数据与增量数据同步 1.不关心主键: a.第一次直接全量同步: insert overwrite table target select * from source b.第二次以后采用增量同步:表 ...

  4. java从hbase增量导出到,Hbase实用技巧:全量+增量数据的迁移方法

    摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...

  5. Elasticsearch和MySQL数据同步(logstash-input-jdbc)全量增量方式同步近千万数据

    同步方案: 同步读写:最为简单的方式在将数据写到mysql时,同时将数据写到ES,实现数据的双写. 异步双写(MQ方式):MQ的性能基本比mysql高出一个数量级,所以性能可以得到显著的提高. 定时器 ...

  6. “全量增量” 与 “增量同步” 一文了解清楚【建议收藏】

    大家在同步数据的时候都会接触到2个名词,"全量增量" 与 "增量同步" ,名字都长得差不多,但是意思和操作却不一样:比如部门领导给你方案,那我们要如何去选择其中 ...

  7. mysqldump备份(全量+增量)

    在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 线上数据库备份场景: 每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备 ...

  8. mysqldump全量恢复_【MySQL】全量+增量的备份/恢复

    生产环境中,有时需要做MySQL的备份和恢复工作.因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助.如果想恢复数据到一个空库(例如数据迁移或者上云等更 ...

  9. MySQL主从恢复(全量恢复数据)

    前言 当mysql主从(一主一从模式)数据不同步,常规方式解决不掉,故全量恢复数据并同步数据. 发现问题 首先可以由mstaer status观察到主从已经未同步,其次slave status看到sl ...

最新文章

  1. Beta 冲刺 (7/7)
  2. 编程实现灰度处理函数
  3. 平均股价的时间序列图形_美股技术分析 神奇的九转序列
  4. linux下java调用python脚本,java - 在Linux Terminal中以编程方式从Java调用python脚本 - 堆栈内存溢出...
  5. Unable to compile class for JSP的解决方法
  6. Netflix推荐系统(Part two)-系统架构
  7. python excel详解_Python - excel 详解
  8. 长沙湘江科技学校计算机信息,长沙湘江科技中等职业学校简介|长沙湘江科技中等职业学校介绍...
  9. (进阶)LeetCode(119)——杨辉三角 II(JavaScript)
  10. html页面导出pdf截断问题,vue页面生成pdf且避免分页截断处理
  11. 上海万科地产档案室—智慧管理项目
  12. html手机陀螺仪,陀螺仪MEMS - 详解冷门但很重要的手机陀螺仪
  13. 特征图注意力_【抠图中的注意力机制】HAttMatting---让抠图变得如此简单!
  14. Python高速缓存和会话库——Beaker
  15. Kali基于字典的无线破解
  16. CODE RO RW ZI
  17. 记录:前端js实现页面内简繁体切换
  18. python列表两两相减_【数据分析入门】之:如何用Python代替Excel(1)
  19. latex 矩阵_【手把手教学】玩转LaTeX科技绘图:绘制贝叶斯网络丨城市数据派
  20. Qt error ------ 'XXX' has not been declared

热门文章

  1. [课设]烟台大学课程表app
  2. Android创建一个简易课程表APP
  3. 查看linux ftp字符集,linux 字符集及FTP传输乱码处理
  4. 书单推荐:各领域入门书籍推荐——文史理工艺术——程序员的自我修养
  5. 蓝桥杯java初赛本科组,2012年第三届蓝桥杯全国软件专业人才设计与开发大赛Java本科组初赛试题...
  6. 通过Fiddler(windows)抓http请求(android、浏览器)
  7. 微计算机的发展通常以,计算机组成原理复习材料 (2)
  8. 零基础能不能学插画设计?学插画需要素描吗?
  9. 医疗人员计算机职称考试题库,全国计算机职称考试题库.pdf
  10. 开封机器人餐厅_开封食品分拣机器人