zoukankan      html  css  js  c++  java
  • SSIS 实现update,delete,insert

    SSIS 实现update,delete,insert

    在数据库ETL时,ETL 有两种类型的数据表提取:全部源提取,其中无法标识更改的或新的记录;递增提取,其中只提取新的记录和更改的记录。
    在这里我将简单介绍一下利用SQL Server 2005 集成服务(SSIS)如何实现全部源提取的思路,如果不能理解,欢迎发邮件和我交流。
    案例:
    在源系统上,有些记录包含在表中,该表不标识新的或已修改的记录,因此 ETL 过程必须比较源表和目标表之间的记录以标识更改发生的时间。
    然后正确地处理插入或更新。

    思路如下:
    第一步: 对源表和目标表使用全部合并连接和完整数据集。全部连接有助于标识库存记录添加到源中的时间或完全删除的时间。
    使用配置为全部连接的 Merge Join 转换满足此要求。
    注:由于要使用Merge Join 转换,必须是有序的,如果用order排序组件在大数据量时效率不高,因此可以事先用order by排序。
    为此,数据流需要注意:源已排序以及排序所应用的列和方向。这是在 Source Connection 的 Advanced Editor(高级编辑器)中完成的。
    在 Input and Output Properties(输入和输出属性)选项卡上,请查看 OLE DB Source Output(OLE DB 源输出)的顶级属性,有一个名为 IsSorted 的属性,它需要设置为 True。
    第二,需要通过 Output Columns(输出列)容器中的 SortKeyPosition 属性指定排序的列。然后数据流将认可此排序。
    第二步:利用Conditional Split分别拆分三个和一个默认的如下所示:
    Insert 为目标表主键为空;
    Delete  为源目标表主键为空;
    Unchanged 为源和目标表为发生变化的分别比较每列;
    Update   剩下的也就是默认的就是需要Update的数据;

  • 相关阅读:
    jdbc连接数据库
    UUID
    Oracle 查询
    JAVA开发工具eclipse中@author怎么改
    JAVA实现多线程入门
    JAVA编程中的类和对象
    为ubuntu操作系统增加root用户
    搭建Java环境JDK,和运行环境JRE
    安装Ubuntu14.04版本的操作系统
    Eclipse连接到My sql数据库之前操作
  • 原文地址:https://www.cnblogs.com/dbasys/p/2127586.html
Copyright © 2011-2022 走看看