微软BI开拓者

首页 » 数据仓库专区 » SSIS使用与管理 » 数据更新问题的一个演变,困扰很久了,请大家帮忙
elitwentian - 2008-11-18 16:47:00
请您帮忙看看.谢谢


已知

表1

mail    name    pass 

123@123.com  123 password1
1234@123.com  1234  password2
12345@123.com  12345  password3


表2

mail    name    pass
 
123@123.com  123 password1
1234@123.com  1234  password21
4321@123.com  4321  password4

表3

id mail    name    pass

1234@123.com  1234  password2

表2为不断增长的表mail为主键,需要不断的同表1进行比对,实现以下要求:
---表1没有的mail项,将表2中的该条数据添入到表1作为新数据
---表1中有的mail项,并且pass项相同则不作任何操作
---表1中有的mail项,并且pass项不相同,则先将表1中的该条数据填入表3,但是如果该数据表3中有就丢弃。(***这个地方我只会将查出不同的表2数据加!)
                                    然后用表2中的密码去更新表1。

~~~~~
我是这么做的

控制流:
   
      数据流任务1:(完成新数据插入)
                    数据源(表2)
                        | 
                    查找(表1),映射mail
                    | 
                错误结果插入数据目标(表1)

      数据流任务2::(完成历史数据插入表3)
                    数据源(表1)
                        | 
                    查找(表2),映射mail
                    | 
                成功结果查找(表2)映射mail,key(报错)
                    |
                失败结果查找(表3)映射mail,key
                    |
                失败结果插入数据目标(表3)

      数据流任务1:(完成更新数据)
                    数据源(表2)
                        | 
                    查找(表1),映射mail key
                    | 
                    更新(表1)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如果我将数据流任务2改成::(完成历史数据插入表3)
                    数据源(表1)
                        | 
                查找(表2)映射mail,key
                    |
                失败结果查找(表3)映射mail,key
                    |
                失败结果插入数据目标(表3)
这样是成功的,但是有个问题,表1中的12345@123.com  12345  password3 这条表2中没有,但是也被插入到了表3  怎么解决???
beeai - 2008-11-18 21:08:00
说实话,看了一会有点感觉了..
不过,貌似你后改的这个数据流任务就应该是这样的结果:
根据mail/Key判断,表1中有的,而表2和表3中都没有的记录插入表3。
我的理解对吗?
elitwentian - 2008-11-19 11:15:00
beeai :
问题就在这,我后来改的确实是根据mail/pass判断,表1中有的,而表2和表3中都没有的记录插入表3。
  !!!但是我需要的是根据mail/pass判断,表1和表2中mail相同,而pass不同的项中,按照表1的数据为标准插入表3!!!
beeai - 2008-11-19 15:38:00
“根据mail/pass判断,表1和表2中mail相同,而pass不同的项中,按照表1的数据为标准插入表3”这个逻辑不是很复杂呀,用Lookup和条件分支应该能满足要求的。
建议你再仔细整理一下思路,我也会尽快抽空帮你研究的..
elitwentian - 2008-11-19 16:34:00
谢谢,等你的。
我再重复一下要求用ssis实现表1和表2中mail相同,而pass不同的项中,按照表1的数据为标准插入表3。(表1表3是本机的sql表,表2是共享机器上的mdb表)。
注意!!不是表1和表2中mail相同,而pass不同的项中,按照!!表2!!的数据为标准插入表3
一笑不倾城 - 2008-11-24 10:40:00
看着实在是晕,不过根据你的条件。我列了个流程。
你看看。

 附件: 您所在的用户组无法下载或查看附件
一笑不倾城 - 2008-11-24 10:42:00
判断pass是否相同前,将查找表1输出一个Pass项然后可在条件判断中比较两个pass字段是否相同。
1
查看完整版本: 数据更新问题的一个演变,困扰很久了,请大家帮忙