日期:2014-05-18  浏览次数:20701 次

SSIS关于更新的问题
有两表:表1,表2,表1是源表,数据会更新,里面的数据也可能修改,现在让表2的数据同表1一样(既更新了,也更新,修改了也修改)
  我的做法是这样的,数据源OLE DB 选表1,拉一个渐变维度组件来,把源绿线拉到该组件,编辑渐变维度组件,表选表2,输入列中一列的键类型选为业务键,其他都不变,下一步中其他的列都选为维度列,更改类型为 变化的,下一步,在变化的类型上打勾.
我这样做可以实现更新与修改的数据.
  不知道大家是怎么做的, 还有我这样做的话会不会影响性能,因为做BI的话数据量很大的,
  请大家介绍一下自己的方法.

------解决方案--------------------
那不如用触发器了.
------解决方案--------------------
如果两表完全一样,貌似你的需求没什么意义,直接用一个表即可.

如果非要这么用,参考触发的作用.

SQL code
--触发器的操作1

create table 化验室纱组(本厂编号 int,客户 int,色号 int,纱支 int)
create table 化验室布组(本厂编号 int,客户 int,色号 int,布类 int)
go
create trigger my_trig on 化验室纱组 for insert ,update ,delete
as
if not exists(select 1 from inserted)
   delete 化验室布组 from deleted t where 化验室布组.本厂编号 = t.本厂编号 
else if not exists(select 1 from deleted) 
   insert into 化验室布组(本厂编号 ,客户 ,色号) select 本厂编号 ,客户 ,色号 from inserted
else
   update 化验室布组 set 客户 = t.客户 , 色号 = t.色号 from inserted t where 化验室布组.本厂编号 = t.本厂编号
go

--1、insert 对化验室纱组插入数据,然后查看化验室布组表的数据
insert into 化验室纱组 values(1 , 2 , 3 , 4)
insert into 化验室纱组 values(5 , 6 , 7 , 8)
go
select * from 化验室布组
/*
本厂编号        客户          色号          布类          
----------- ----------- ----------- ----------- 
1           2           3           NULL
5           6           7           NULL

(所影响的行数为 2 行)
*/

--2、update , 更改化验室纱组表中本厂编号=1的色号=6
update 化验室纱组 set 色号 = 6 where 本厂编号 = 1
go
select * from 化验室布组
/*
本厂编号        客户          色号          布类          
----------- ----------- ----------- ----------- 
1           2           6           NULL
5           6           7           NULL

(所影响的行数为 2 行)
*/

--3、delete 化验室纱组表中本厂编号=1的那条数据
delete from 化验室纱组 where 本厂编号 = 1
go
select * from 化验室布组
/*
本厂编号        客户          色号          布类          
----------- ----------- ----------- ----------- 
5           6           7           NULL

(所影响的行数为 1 行)
*/

drop table 化验室纱组 , 化验室布组

------解决方案--------------------
1、缓慢变化维度 数据流

2、update、insert 执行sql任务

3、 service broker ,触发存储过程,实时性高,但是如果数据量大分解xml需要时间
------解决方案--------------------
也可以考虑用SQLServer的发布与订阅功能,有实时性较高的方案。
------解决方案--------------------
请说明更新频率
------解决方案--------------------
SSIS主要是的用途之一:数据清洗,不过楼主要求的实时性,这样的话就对性能提出了一个更高的要求,楼主需要衡量之后再考虑是否用SSIS。
------解决方案--------------------
一般维度处理采用渐变维度是可以的,大维度就可能不行了。