如何使用 Multicast Task 将数据同时写入多个目标表

开篇介绍

在 SSIS Data Flow 中有一个 Multicast 组件,它的作用和 Merge, Merge Join 或者 Union All 等合并数据流组件对比起来作用正好相反。非常直观,它可以将一个数据流平行分开成为多个数据流供下游其它 Data Flow 组件使用。

使用 Multicast Task 的几种情形

第一种,从同一个数据源中取出一部分数据直接放到 A 表中,一部分数据直接放到 B 表中。我曾经遇到一个370多列的一个文件,这370列的文件可以分出列数不等的7,8 张表。我最开始的做法是先将这个文件的数据 Load 到一个大表中,然后再从大表抽取不同的列到小表中,这样相当于形成了二次加载,效率不高,后来使用 Multicast 就可以一次性直接将 370 列宽的文件分散到不同的表中。

第二种,从数据源 A 抽取数据到 B,B 每次都会先 Truncate 一下,但是又需要备份一下每次从 A 抽取的数据,这个时候也可以使用 Multicast。在每次从 A 抽取数据的时候,通过 Multicast 使数据在导向 B 的同时也导向到 B 的备份表。

第三种,类似于第二种,不同的是没有备份表,但是需要保留加载的一些 Audit 信息数据。比如,从 Source 抽取数据到 Staging 的时候,同时需要记录一下抽取的行数,以及用来标示这批 Staging 数据中最大的时间戳,表名和列的名称。这样的话,下次加载数据到 Staging 的时候就只选择加载新增的 Source 数据,也就是上一批最大时间戳之后的新数据。

当然,同一种问题可能有不同的解决的方式,欢迎大家补充!

下面的示例演示一下第一种和第三种情形。

第一种 - 分散同一个 Source 表数据到多个目标表中

先从 TSQL2012 中抽取一部分测试的数据 (TSQL2012 是 Microsoft SQL Server 2012 High-Performance T-SQL Using Window Function 一书中的示例数据库),我们的 Source 表就是 SalesOrderSource。

USE BIWORK_SSIS
GO

IF OBJECT_ID('dbo.SalesOrderSource','U') IS NOT NULL
DROP TABLE dbo.SalesOrderSource
GO

SELECT *
INTO dbo.SalesOrderSource
FROM TSQL2012.Sales.Orders
WHERE orderdate < '2006-08-01'

SELECT * FROM dbo.SalesOrderSource

创建两个目标表,一个用来简单存储 Order 相关信息,一个用来简单存储 Ship 相关信息。

IF OBJECT_ID('dbo.SalesOrder','U') IS NOT NULL
DROP TABLE dbo.SalesOrder

IF OBJECT_ID('dbo.OrderShip','U') IS NOT NULL
DROP TABLE dbo.OrderShip

CREATE TABLE dbo.SalesOrder
(
   OrderID INT,
   CustID INT,
   EmpID INT,
   OrderDate DATETIME,
   CreateDate DATETIME DEFAULT(GETDATE())
)

CREATE TABLE dbo.OrderShip
(
   OrderID INT,
   ShippedDate DATETIME,
   Shipperid INT,
   freight MONEY,
   shipname NVARCHAR(40),
   CreateDate DATETIME DEFAULT(GETDATE())
)

创建连接管理器的过程就不多说了,新建一个 Data Flow Task, 然后创建一个 OLE DB Source 指向 SalesOrderSource 这张数据源表。

在 Columns 中选择只需要向下输出的列,减少不必要的数据传输。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据
, 数据流
, 数据源
, dbo
, 一个
抽取
java给目标文件写入值、multicast、multicast address、dubbo multicast、unicast multicast,以便于您获取更多的相关知识。

时间: 2024-11-03 07:04:15

如何使用 Multicast Task 将数据同时写入多个目标表的相关文章

SSSIS:在 SSIS 中使用 Multicast Task 将数据源数据同时写入多个目标表

在 SSIS 中使用 Multicast Task 将数据源数据同时写入多个目标表,以及写入Audit 与增量处理信息 在 SSIS Data Flow 中有一个 Multicast 组件,它的作用和 Merge, Merge Join 或者 Union All 等合并数据流组件对比起来作用正好相反,非常直观,它可以将一个数据流平行分开成为多个数据流供 下游其它 Data Flow 组件使用. 首先描述一下使用 Multicast Task 的几种情形  - 第一种,从同一个数据源中取出一部分数

Windows 7开发:用户帐户管理数据重定向(写入受保护的资源)

您可能遇到过下面的一种或多种情况: • 您的应用程序写入Program Files ,Windows目录,或者系统根(一般是C盘)文件夹,但是您在这些地方并没有找到您的文件 • 您的应用程序写入Windows注册表,特别是HKLM/Software中,但是您没有看 到注册表进行了更新 • 您切换到了另一个帐户,并且您的应用程序没有办法找 到已写入Program Files,Windows目录,或者系统根(一般是C盘)文件夹的文件,或者找到 了这些文件的老版本 • 在启用或禁用用户帐户控制(UAC

c++-文件的读写,会将类对象的数据成员写入文件中。能将文件中的信息读入类对象的对应属性中。

问题描述 文件的读写,会将类对象的数据成员写入文件中.能将文件中的信息读入类对象的对应属性中. 情况一:无get,set,无<< >>重载函数的情况下如何将类对象的各个数据成员写入某个文件中(提示:可以在print函数中写代码). 情况二:当程序包含get,set函数而无<< >>重载函数时,如何将类对象的数据成员写入文件中. 情况三:当程序包含<< >>重载函数时,如何将类对象的数据成员写入文件中. 解决方案 大神在哪里,求,求大神

数据库-NodeJS数据查询写入文件

问题描述 NodeJS数据查询写入文件 有两个不同的数据库,需要条件查询一个数据库选出用户名,量比较大 大概300W左右 然后用这300W用户名查询另外一个库的数据,写入到最后的文件当中.用什么方法比较好呢? 方法1:分页查询出用户名,然后查询另外一个库,查询结果写入文件 方法2:一次性查出用户名,写入文件当中,然后根据文件逐行查询,写入文件. 解决方案 用这300W用户名查询另外一个库的数据 这个查询是怎么查询的. 性能出现在查询结果过多还是查询速度过慢. 如果是后者,建议优化你的查询语句,s

java解析wenjia-操作csv文件操作里边的数据 最后写入excel中

问题描述 操作csv文件操作里边的数据 最后写入excel中 文件是这样的 第一行是列名 ,第二行是对应的数据(11对应),要求是把每一列的数据求和 最后存入excel中,有没有例子啊 解决方案 解决方案二: excel本身支持csv 所以你可以还是保持csv文件

HTAP数据库 PostgreSQL 场景与性能测试之 24 - (OLTP) 物联网 - 时序数据并发写入(含时序索引BRIN)

标签 PostgreSQL , HTAP , OLTP , OLAP , 场景与性能测试 背景 PostgreSQL是一个历史悠久的数据库,历史可以追溯到1973年,最早由2014计算机图灵奖得主,关系数据库的鼻祖Michael_Stonebraker 操刀设计,PostgreSQL具备与Oracle类似的功能.性能.架构以及稳定性. PostgreSQL社区的贡献者众多,来自全球各个行业,历经数年,PostgreSQL 每年发布一个大版本,以持久的生命力和稳定性著称. 2017年10月,Pos

急求:如何把datagridview 表格中的数据写入到SQL数据库表中?

问题描述 如何把datagridview表格中的数据写入到SQL数据库表中?请知道的给我点详细的代码让我学习一下,谢谢了, 解决方案 解决方案二:例:自己更换连接对象.表名就可以了.DimsqladpAsNewSqlClient.SqlDataAdapterDimsqlcomAsNewSqlClient.SqlCommandDimsqlcbdAsNewSqlClient.SqlCommandBuildersqlcom.Connection=DBsqlcom.CommandText="select

struts2+spring+mybatis 程序不报错,但是数据无法写入数据库

问题描述 struts2+spring+mybatis 程序不报错,但是数据无法写入数据库 执行到service 无法写入数据库,不报错.代码如下: <?xml version=""1.0"" encoding=""utf-8"" ?><!DOCTYPE mapper PUBLIC ""-//mybatis.org//DTD Mapper 3.0//EN""http:/

c# mssql xml-C#中,读取数据库数据,写入xml文件

问题描述 C#中,读取数据库数据,写入xml文件 C#中,读取数据库数据,比如说表,存储过程,函数等等,然后把这些数据写成xml文件 存入本地硬盘,请各位大神教教我,,, 解决方案 你是 只需要读数据库的资料然后自己根据资料写xml 还是写个程序让机器自己根据从数据库中读出的资料然后生成相应的XML? 解决方案二: 参考一下这个http://bbs.csdn.net/topics/360167449 解决方案三: 读取数据库中的数据应该没有问题吧.写入xml参考:http://blog.csdn