CDC增量集成示例
- 格式:docx
- 大小:121.13 KB
- 文档页数:3
1简单增量集成示例
这里给个简单CDC的实例,并且将该简单增量设置成包轮询方式,以实现实时同步需求,具体步骤如下:
1.1数据服务器,模型,项目
创建源和目标的数据服务器,物理架构,逻辑架构,创建模型反向表,以及创建项目,步骤都同简单全量集成一样。
1.2配置JKM
KM 是为表生成并捕获日志的知识模块,需要在模型和表上面进行配置。
目中导入JKM。
请导入JKM Oracle Consistent,JKM Oracle Simple两个KM,
编辑模型mod_test的日记记录,选择简单日记记录模式,并选择JKM Oracle Simple:
1.3启用CDC
ODI启用CDC,包括下面的步骤:添加到CDC,订阅CDC,启动日记。
首先在模型mod_test的弹出菜单中选择添加到CDC:
接下来从模型mod_test的弹出菜单中选择启动日记
在弹出的窗口中录入订阅的用户名,如SUNOPSIS,点击添加订户:
将“SUNOPSIS”订户添加进所示区域后点击确定即可;同时这将会启动一个会话,请在Operator 中查看会话是否成功完成。
这个会话会在数据库中创建一些对象:CDC 的数据字典表(SNP开头),日记表和视图(通常是J$和JV$开头),trigger(通常以T$开头)。
1.4创建接口接口常见如下图所示:
LKM选择
IKM选择:。
oracle cdc 原理Oracle CDC(Change Data Capture)是一种数据捕获技术,用于捕获数据库中的数据变化,并将这些变化应用于其他系统中。
它可以实时监控数据库的变化,并将这些变化记录下来,以便后续的分析和处理。
Oracle CDC的原理是通过在数据库中创建日志来实现的。
当数据库中的数据发生变化时,Oracle会将这些变化写入日志文件中。
CDC 通过解析这些日志文件来获取数据的变化,并将其应用于其他系统中,以保持数据的一致性。
为了实现CDC,Oracle会记录以下三种类型的日志:1. Redo Log:这是Oracle数据库中最重要的日志类型之一。
当数据发生变化时,Oracle会将变化前后的数据记录到Redo Log中。
CDC 通过解析Redo Log来获取数据的变化。
2. Undo Log:Undo Log记录了事务的撤销信息。
当数据库中的数据发生变化时,Oracle会将原始数据保存到Undo Log中。
CDC可以通过解析Undo Log来获取数据的变化。
3. Archive Log:Archive Log是将Redo Log保存到磁盘上的一种机制。
通过将Redo Log保存到磁盘上,可以确保即使数据库崩溃,数据的变化也不会丢失。
CDC可以通过解析Archive Log来获取数据的变化。
通过解析这些日志文件,CDC可以获取数据的变化信息,并将其应用于其他系统中。
它可以实时监控数据库的变化,并将这些变化同步到其他系统中,以保持数据的一致性。
使用Oracle CDC可以带来许多好处。
首先,它可以实现实时数据同步,确保数据在不同系统之间的一致性。
其次,它可以降低数据同步的延迟,使得数据可以更快地在系统之间流动。
此外,Oracle CDC还可以提供增量备份和恢复的功能,以及实时数据分析和报告的能力。
总结起来,Oracle CDC是一种通过解析数据库日志来捕获数据变化的技术。
它可以实时监控数据库的变化,并将这些变化应用于其他系统中。
数据湖是指一个包含各种类型和格式的大量数据的存储系统。
数据湖的设计目的是将数据存储在原始、未加工的状态下,以便将来进行分析和处理。
然而,在实际应用中,数据湖需要与其他系统保持同步,以确保数据的准确性和一致性。
因此,本文将探讨数据湖的增量与全量数据同步方法。
1. 增量数据同步方法增量数据同步是指将新产生或更新的数据同步到数据湖的过程。
在数据湖中,增量数据同步对于保持数据的最新状态至关重要。
以下是几种常见的增量数据同步方法:a) 变更数据捕获(CDC)CDC是一种通过捕获数据库中的变更来实现数据同步的方法。
它通过监视数据库事务日志来捕获数据变更,然后将这些变更应用到数据湖中。
CDC方法可以很好地支持增量数据同步,但它需要数据库支持日志记录功能。
b) 基于时间戳的同步这种方法通过比较源系统和数据湖中数据的时间戳来确定需要同步的数据。
只有时间戳在某个阈值之后的数据才被同步到数据湖中。
这种方法简单易懂,但如果源系统的时间戳不准确,会导致数据同步的错误和延迟。
c) 增量数据抽取(IDE)IDE是一种将增量数据从源系统抽取到数据湖的方法。
它通过比较源系统和数据湖中的数据,然后将差异数据抽取到数据湖中。
IDE方法可以根据业务需求自定义增量抽取策略,但如果源系统的数据量很大,会对系统性能产生影响。
2. 全量数据同步方法全量数据同步是指将源系统中的所有数据同步到数据湖的过程。
全量数据同步方法可以确保数据湖中的数据完整和一致。
以下是几种常见的全量数据同步方法:a) 批量导入批量导入是将源系统中的数据按照批次导入到数据湖的方法。
通过将数据分成多个批次,可以降低对源系统和数据湖的压力。
批量导入方法适用于数据量较小的场景,但如果源系统的数据量非常大,导入过程可能需要很长时间。
b) 增量+全量导入这种方法将增量数据和全量数据结合起来进行同步。
首先,使用增量数据同步方法将增量数据同步到数据湖中。
然后,使用全量导入方法将源系统中的所有数据导入到数据湖中。
通过一个例子来演示实现同步模式的CDC的基本步骤。
第一步:查看数据库版本SYS-->SQL:select * from v$version;第二步:创建发布者并授权1.在源数据库下创建一个用户,作为发布者。
SYS-->SQL:create user cdcpub identified by cdcpub;2.授予相应的权限SYS-->SQL:grant execute_catalog_role to cdcpub;grant select_catalog_role to cdcpub;grant create table to cdcpub;grant create session to cdcpub;grant execute on dbms_cdc_publish to cdcpub;第三步:设置初始化参数同步CDC,需要将java_pool_size设置为合适的大小,估计是其内部是采用java存储过程来实现的。
SYS-->SQL:alter system set java_pool_size=48M;第四步:发布变化数据(例如要发布用户CDC_SCOTT下的EMP表)1.发布前准备。
创建一个用户和用户下的一个表SYS-->SQL:create user CDC_SCOTT identified by CDC_SCOTT;grant resource to CDC_SCOTT;grant connect to CDC_SCOTT;CDC_SCOTT-->SQL:create table EMP(EMPNO NUMBER(4) not null,ENAME V ARCHAR2(10),JOB V ARCHAR2(9),MGR NUMBER(4),HIREDATE DATE,SAL NUMBER(7,2),COMM NUMBER(7,2),DEPTNO NUMBER(2));insert into emp (EMPNO, ENAME, JOB, MGR, HIREDA TE, SAL, COMM, DEPTNO) values (7369, 'SMITH', 'CLERK', 7902, to_date('17-12-1980', 'dd-mm-yyyy'), 800.00, null, 20);insert into emp (EMPNO, ENAME, JOB, MGR, HIREDA TE, SAL, COMM, DEPTNO) values (7698, 'BLAKE', 'MANAGER', 7839, to_date('01-05-1981', 'dd-mm-yyyy'), 2850.00, null, 30); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDA TE, SAL, COMM, DEPTNO) values (7782, 'CLARK', 'MANAGER', 7839, to_date('09-06-1981', 'dd-mm-yyyy'), 2450.00, null, 10); insert into emp (EMPNO, ENAME, JOB, MGR, HIREDA TE, SAL, COMM, DEPTNO) values (7788, 'SCOTT', 'ANAL YST', 7566, to_date('19-04-1987', 'dd-mm-yyyy'), 3000.00, null, 20); COMMIT;2.授予cdcpub用户对于该表的权限CDC_SCOTT-->SQL:grant all on EMP to cdcpub;3.创建变更集SYS-->SQL:begindbms_cdc_publish.create_change_set(change_set_name =>'CDC_SCOTT_EMP',description =>'change set for CDC_SCOTT.EMP',change_source_name =>'SYNC_SOURCE');end;/注:同步CDC的chang source必须是SYNC_SOURCE。
flinkcdc断点续传案例摘要:1.Flink CDC简介2.断点续传原理3.实现步骤4.总结与展望正文:随着大数据时代的到来,实时数据处理变得越来越重要。
Flink作为一款开源的流处理框架,在大数据领域得到了广泛的应用。
Flink CDC(Change Data Capture)提供了实时增量数据捕获功能,使我们能够轻松地获取源系统中的数据变化。
本文将介绍如何使用Flink CDC实现断点续传功能,从而提高数据处理任务的可靠性。
一、Flink CDC简介Flink CDC是Flink提供的一种数据捕获机制,可以实时捕获源系统中数据的变化。
Flink CDC支持多种数据源,如Kafka、Kinesis、MySQL等。
通过Flink CDC,我们可以轻松地构建实时数据处理管道,满足各种业务需求。
二、断点续传原理断点续传的核心思想是在数据处理任务失败时,可以从上次成功的进度开始继续处理,避免从头开始重新执行。
在Flink CDC中,我们可以通过以下两种方式实现断点续传:1.使用检查点(Checkpoint):检查点是Flink中用于保存数据状态的一种机制。
在数据处理任务中定期生成检查点,以便在任务失败时恢复到上次成功的检查点。
2.使用输出端存储(Output State):输出端存储是Flink中的一种状态管理机制,可以将数据处理过程中的结果暂存在外部存储系统中。
当任务失败时,可以从输出端存储中恢复数据,继续执行后续任务。
三、实现步骤1.构建实时数据处理任务:首先,根据业务需求构建实时数据处理任务,使用Flink CDC读取数据源,并进行相应的转换和处理。
2.配置检查点:在实时数据处理任务中配置检查点,设置检查点间隔和存储位置。
确保在任务运行过程中,定期生成检查点文件。
3.配置输出端存储:根据实际需求,选择合适的输出端存储系统(如HDFS、Kafka等),并配置相关参数。
4.监控任务运行:在任务运行过程中,实时监控任务状态。
数据实时增量同步之CDC⼯具—Canal、mysql_stream、go-mysql-tr。
@⽬录[Mysql数据实时增量同步之CDC⼯具—Canal、mysql_stream、go-mysql-transfer、Maxwell:什么是CDC?CDC(Change Data Capture)是变更数据获取的简称。
可以基于增量⽇志,以极低的侵⼊性来完成增量数据捕获的⼯作。
核⼼思想是,监测并捕获数据库的变动(包括数据或数据表的插⼊、更新以及删除等),将这些变更按发⽣的顺序完整记录下来,写⼊到消息中间件中以供其他服务进⾏订阅及消费。
简单来讲:CDC是指从源数据库捕获到数据和数据结构(也称为模式)的增量变更,近乎实时地将这些变更,传播到其他数据库或应⽤程序之处。
通过这种⽅式,CDC能够向数据仓库提供⾼效、低延迟的数据传输,以便信息被及时转换并交付给专供分析的应⽤程序。
与批量复制相⽐,变更数据的捕获通常具有如下三项基本优势:CDC通过仅发送增量的变更,来降低通过⽹络传输数据的成本。
CDC可以帮助⽤户根据最新的数据做出更快、更准确的决策。
例如,CDC会将事务直接传输到专供分析的应⽤上。
CDC最⼤限度地减少了对于⽣产环境⽹络流量的⼲扰。
CDC⼯具对⽐特⾊Canal mysql_stream go-mysql-transfer Maxwell开发语⾔Java Python Golang Java⾼可⽤⽀持⽀持⽀持⽀持接收端编码定制Kafka等(MQ)Redis、MongoDB、Elasticsearch、RabbitMQ、Kafka、RocketMQ、HTTP API 等Kafka,Kinesis、RabbitMQ、Redis、GoogleCloud Pub/Sub、⽂件等全量数据初始化不⽀持⽀持⽀持⽀持数据格式编码定制Json(固定格式)Json(规则配置) 模板语法 Lua脚本JSON性能(4-8TPS)实现原理:1、go-mysql-transfer将⾃⼰伪装成MySQL的Slave,2、向Master发送dump协议获取binlog,解析binlog并⽣成消息3、将⽣成的消息实时、批量发送给接收端Mysql binlog 讲解:MySQL的⼆进制⽇志可以说MySQL最重要的⽇志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执⾏的消耗的时间,MySQL的⼆进制⽇志是事务安全型的。
集成开发手册编制人员:金立军编制部门:软件工程研发中心模版文件版本:V1.3.0适用项目范围:研发项目文件修改记录表文件审批表目录目录 (4)1前言 (6)1.1背景与说明 (6)1.2文章结构安排 (7)1.3术语定义 (8)2集成方式说明及示例 (8)2.1集成方式说明 (9)2.1.1全量集成 (9)2.1.2增量集成 (9)2.2集成周期 (10)2.2.1实时集成 (10)2.2.2定期集成 (10)2.3开发示例 (11)2.3.1全量集成示例 (11)2.3.2简单增量集成示例 (40)2.3.3多用户一致性增量集成示例 (51)3集成场景描述及分析 (64)3.1数据源场景 (64)3.1.1关系型数据库数据集成 (64)3.1.2非关系型数据集成 (66)3.2清洗转换场景 (67)3.2.1映射转换 (68)3.2.2筛选过滤 (69)3.3部署运行场景 (72)3.3.1代理发布 (72)3.3.2项目导入导出 (72)3.4常见业务场景 (74)4集成处理策略及示例 (74)4.1关系型数据库数据集成 (74)4.1.1BLOB类型的集成 (74)4.1.2CLOB类型的集成 (83)4.2非关系型数据集成 (91)4.2.1TXT文件集成 (92)4.2.2EXCEL数据文件集成 (122)4.2.3ACCESS集成(远程ODBC说明) (144)4.2.4Web Service数据集成 (165)4.2.5XML数据文件集成 (194)4.2.6本地图片文件集成 (214)4.2.7FTP上单个图片文件集成 (226)4.2.8FTP上多图片文件集成 (238)4.3部署运行 (275)4.3.1CMD启动代理 (276)4.3.2Windows下代理发布为服务 (278)4.3.3Linux下代理发布为服务 (295)4.4其他常见业务场景 (305)4.4.1ODI中OCI方式连接Oracle (305)4.4.2ODI目标数据删除事务保证 (316)4.4.3代码映射为空报错处理解决办法 (326)4.4.4Linux下ODBC的配置 (337)4.4.5一致性增量创建包轮询 (350)5KM场景调用 (353)5.1JKM调用 (354)5.1.1触发器方式 (354)5.1.2日志位方式 (355)5.2LKM及IKM调用 (355)5.2.1关系型数据库数据集成 (356)5.2.2其他文件数据集成 (358)5.3CKM调用 (359)6FAQ问题整理 (359)6.1配置问题 (360)6.1.1Nvavigator的配置、使用问题 (360)6.1.2EXCEL数据集成时的配置问题 (361)6.1.3Oracle SID改写问题 (363)6.2数据库连接问题 (364)6.2.1Mysql远程访问授权问题 (364)6.2.2SQL server 2000连接问题 (365)6.2.3SQL server 2005 JDBC 问题 (368)6.2.4OCI方式连接数据库JDBC问题 (370)6.2.5OCI方式连接数据库问题 (371)6.3数据类型问题 (371)6.3.1数据类型转换错误 (371)6.3.2目标表某字段的长度小于实际长度 (372)6.4A GENT代理问题 (372)6.4.1Agent配置问题 (372)6.4.2Linux下代理无法发布的问题 (373)6.4.3Linux下多个代理发布问题 (373)6.5W EB S ERVICE数据集成问题 (375)6.5.1ODI中发布数据Web服务问题 (375)6.6BLOB同步问题 (376)6.6.1BLOB不能同步问题 (376)6.6.2BLOB同步数BLOB字段变少问题 (377)6.6.3BLOB同步批量取数据问题 (377)6.6.4BLOB同步中插入数据问题 (379)6.6.5BLOB同步时执行ftp读取到本地目录时报错: (380)6.6.6BLOB同步执行Insert binary file into target操作时报错: (381)6.6.7BLOB同步执行create directory object操作时报错: (382)6.6.8照片往数据库集成找不到路径问题 (383)6.7同步过程中其他问题 (384)6.7.1临时对象无法创建问题 (384)6.7.2做简单CDC同步订户问题 (385)6.7.3方案更新以及代理计划更新问题 (385)6.8项目导入导出问题 (387)6.8.1项目导入违反唯一性报错问题 (387)6.9约束过滤条件问题 (388)6.9.1增量同步时关系图中过滤条件问题 (388)7其他 (388)8参考资料 (388)1前言1.1背景与说明数据集成平台在ODI工具使用方面,前期已经形成了大部分文档和操作手册,这些文档和操作手册虽然已覆盖了ODI工具使用的大部分内容,但这些文档显得的相对独立和零散,工程实施人员在项目现场进行项目开发和部署时,仍然不知从何下手,找不到相对应的操作手册和指导说明,遇到问题时更无法找到相应的资料进行查阅和参照。
增量集成测试用例-回复什么是增量集成测试用例增量集成测试用例是指在软件开发过程中,根据软件系统的不同模块和功能的增加,逐步添加和执行的测试用例。
增量集成测试的目的是确保软件系统的各个模块之间能够正确地协同工作,同时对整个系统进行全面测试,以及尽早发现和解决可能存在的问题。
通过逐步增加和执行集成测试用例,开发团队可以在软件开发过程中逐渐完善和改进系统,提高软件的质量和稳定性。
如何编写增量集成测试用例编写增量集成测试用例是一个复杂和繁琐的过程,需要开发人员、测试人员和产品负责人共同合作,确保测试用例能够覆盖到系统的各个模块和功能,并且能够检测到潜在的问题。
下面是编写增量集成测试用例的一般步骤:1. 确定测试目标:在编写测试用例之前,需要明确测试的目标和要求。
测试目标可以是验证新添加的功能是否正常工作,或者确定系统的各个模块之间是否能够正确地进行通信和交互。
同时,还需确定测试的覆盖范围和测试的时间安排。
2. 理解系统结构和模块:在编写测试用例之前,需要深入理解系统的结构和各个模块之间的关系。
了解每个模块的功能和输入输出要求,以及模块之间的依赖关系,对于编写有效和全面的测试用例非常重要。
3. 设计测试用例:根据测试目标和对系统的理解,开始设计测试用例。
测试用例应该包括测试的输入和预期输出,以及执行测试的步骤和条件。
测试用例应该尽可能覆盖系统的各个功能和边界情况,以及针对可能存在的异常情况。
4. 执行测试用例:一旦测试用例编写完成,就可以开始执行测试用例。
在执行测试用例之前,需要确保测试环境的准备工作已经完成,包括安装和配置必要的软件和硬件环境。
同时,还需要编写测试报告,记录测试的过程、结果和问题。
5. 分析测试结果:在执行测试用例之后,需要分析测试结果,并对问题进行排查和修复。
如果测试用例中发现问题,则需要及时报告给开发人员,以便尽快解决。
分析测试结果的目的是找出系统存在的缺陷和问题,并确保这些问题得到妥善解决。
CDC实现数据同步,增量更新(转)CDC 实现数据同步,增量更新在Sqlserver2008上利⽤CDC实现了数据更新的跟踪,⽐以往的利⽤时间戳,触发器实现更加⽅便快捷.参考资料:实现步骤如下:1.配置cdc-- 开启cdcUSE db1GOEXEC sys.sp_cdc_enable_db--验证--0 :未开启cdc 1:开启cdcSELECT is_cdc_enabled FROM sys.databases WHERE database_id=DB_ID()--表开启cdcUSE db1;GOEXEC sys.sp_cdc_enable_table@source_schema ='dbo',@source_name='t_cdc_ta',@role_name=null,@capture_instance=NULL,@supports_net_changes=1,@index_name=null,@captured_column_list=null,@filegroup_name=default,@allow_partition_switch=1/*开启之后会⽣成cdc构架,并⽣成查询函数和变更数据表cdc.captured_columnscdc.change_tablescdc.ddl_historycdc.index_columnscdc.lsn_time_mappingdbo.systranschemascdc.dbo_t_cdc_ta_CT 以构架名和表名组合的变更数据表*/--表结构CREATE TABLE [t_cdc_ta]([id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,[name] [varchar](20) NULL,[addr] [varchar](20) NULL,[ttime] [datetime] NULL)2.跟踪变更数据当往源表t_cdc_ta中新增,插⼊,删除数据时,可以在变更数据表[cdc].[dbo_t_cdc_ta_CT]中看到如下数据__$operation:1-删除,2-新增,4-更新3.根据变更数据,利⽤ETL可以实现数据的增量更新脚本如下:USE [db1]CREATE TABLE [dbo].[cdc_capture_log]([cdc_capture_log_id] [int] IDENTITY(1,1) NOT NULL,[capture_instance] [nvarchar](50) NOT NULL,[start_time] [datetime] NOT NULL,[min_lsn] [binary](10) NOT NULL,[max_lsn] [binary](10) NOT NULL,[end_time] [datetime] NULL,[status_code] [int] NOT NULL DEFAULT(0))CREATE PROCEDURE [dbo].[usp_init_cdc_capture_log]@capture_instance NVARCHAR(50)ASBEGINSET nocount ON ;DECLARE @start_lsn BINARY(10),@end_lsn BINARY(10),@prev_max_lsn BINARY(10)--get the max LSN for the capture instance from --the last extractSELECT @prev_max_lsn = MAX(max_lsn)FROM dbo.cdc_capture_logWHERE capture_instance = @capture_instance-- if no row found in cdc_capture_log get the min lsn -- for the capture instance IF @prev_max_lsn IS NULLSET @start_lsn = sys.fn_cdc_get_min_lsn(@capture_instance)ELSESET @start_lsn = sys.fn_cdc_increment_lsn(@prev_max_lsn)-- get the max lsnSET @end_lsn = sys.fn_cdc_get_max_lsn()IF @start_lsn>=@end_lsnSET @start_lsn=@end_lsnINSERT INTO dbo.cdc_capture_log(capture_instance,start_time,min_lsn,max_lsn)VALUES (@capture_instance,GETDATE(),@start_lsn,@end_lsn)SELECT CAST(SCOPE_IDENTITY() AS INT) cdc_capture_log_idENDGOcreate procedure [dbo].[usp_extract_userm_capture_log]@cdc_capture_log_id INTASBEGINset nocount on;DECLARE @start_lsn binary(10),@end_lsn binary(10)-- get the lsn range to process SELECT @start_lsn = min_lsn,@end_lsn = max_lsn from dbo.cdc_capture_log where cdc_capture_log_id = @cdc_capture_log_id-- extract and return the changesselect m.tran_end_time modified_ts,x.*from cdc.fn_cdc_get_all_changes_dbo_t_cdc_ta(@start_lsn, @end_lsn, 'all') xjoin cdc.lsn_time_mapping m on m.start_lsn = x.__$start_lsn ;endCREATE PROCEDURE [dbo].[usp_end_cdc_capture_log]@cdc_capture_log_id INTASBEGINSET nocount ON ;UPDATE dbo.cdc_capture_logSET end_time = GETDATE(),status_code = 1WHERE cdc_capture_log_id = @cdc_capture_log_idENDGO--在另⼀个库上建⼀个相同的结构的表作为同步数据测试⽤表USE montiorGOCREATE TABLE [dbo].[t_cdc_ta]([id] [int] PRIMARY KEY NOT NULL,[name] [varchar](20) NULL,[addr] [varchar](20) NULL,[ttime] [datetime] NULL)GOCREATE PROC [dbo].[p_merge]@oper INT,@id INT,@name VARCHAR(20),@addr VARCHAR(20),@ttime DATETIMEAS-- 删除IF @oper=1BEGINDELETE FROM dbo.t_cdc_taWHERE id=@idENDELSE IF @oper=2 -- 新增BEGININSERT INTO dbo.t_cdc_ta(id,NAME,addr,ttime)VALUES(@id,@name,@addr,@ttime)ENDELSE IF @oper=4 -- 更新BEGINUPDATE dbo.t_cdc_taSET NAME=@name,addr=@addr,ttime=@ttimeWHERE id=@idENDGO停⽤cdcEXEC sp_cdc_disable_tableEXEC sp_cdc_disable_db这样能实现⼀个定时的同步更新,利⽤作业来不断的读取新增加的lsn来更新⽬的数据表,当然同步的时间⼀定要⼤于数据变更的清理作业的时间,默认配置cdc的时候会配置两个jobcdc.db1_capture :捕获变更的作业cdc.db1_cleanup :数据清理作业,每天凌晨两天清理之前看到⼀个哥们在同步数据的时候⽤的 SSIS的条件拆分组件,我测试了下这个数据变更是有先后顺序的,不能直接拆分数据集直接执⾏,这⾥我时显得⽅式是利⽤循环组件⼀条⼀条数据处理,希望能有更好的办法。
CDC增量集成示例一、项目中导入JKM
知识模块中右键“日记(JKM)”,点击“导入知识模块”。
选择“JKM Oracle Simple”,点击确定。
二、配置模型中的日记记录
双击接口源表所在的模型,点击“日记记录”,日记记录模式选择“简单”,知识模块选择刚才导入到项目中的JKM,保存。
三、启用CDC
右键源表,选择“已更改数据捕获”,点击“添加到CDC”
添加后,图标左上角会有橙色时钟,选择“已更改数据捕获”,点击“启动日记”,此时会弹出会话,点击确定后,ODI会在源表数据库自动创建一个源表相关的视图及触发器,
成功后,图标左上角时钟变为绿色
四、修改接口
接口映射中点击源表,勾选下方源属性中的“仅已进行日记记录的数据”,成功后,源表会多出一个沙漏图标。
五、重新生成场景,更新调度
至此,CDC增量集成修改已完成,此后该接口只会针对增删改的数据进行操作,而不是每次都全量集成。
可以右键源表,选择“已更改数据捕获”,点击“日记数据”,来查看数据的变化,日记数据里的内容,就是下次接口执行的时候所要处理的数据。