首页 文章

使用SSIS更新表

提问于
浏览
6

我试图基于公共密钥更新表中的字段与来自另一个表的数据 . 如果它是直接的SQL,它将是这样的:

Update EHSIT
set e.IDMSObjID = s.IDMSObjID
from EHSIT e, EHSIDMS s
where e.SITENUM = s.SITE_CODE

但是,这两个表不在同一个数据库中,所以我正在尝试使用SSIS进行更新 . 哦,sitenum / site_code在一个中是varchar,在另一个中是nvarchar,所以我必须进行数据转换才能匹配 .

我该怎么做?
我有一个数据流对象,源为EHSIDMS,目的地为EHSIT . 我有一个数据转换将unicode转换为非unicode . 但是如何根据匹配进行更新?我've tried with the destination, using a SQL Command as the Data Access mode, but it doesn'似乎有源表 . 如果我只是映射要更新的字段,它如何根据字段匹配限制它?

我准备将我的源表导出到Excel或其他东西,然后尝试从那里输入,虽然似乎所有这些都会让我删除数据转换步骤 .

不应该有更新数据任务或什么?它是那些数据流转换任务之一,我只是不知道它是什么?

4 回答

  • 0

    您可以使用SQLCommand(带参数),但您将有效地为每一行写一个 UPDATE . 我发现最好在目标端编写一个临时表(来自远程端的所有数据或SSIS确定的数据都要更改),并使用单个SQL UPDATE 来执行更新 .

  • 8

    您始终可以使用完整的数据库名称 .

    UPDATE server1.databasename.EHSIT
    SET E.IDMSOBJID = S.IDMSOBJID
    FROM server1.databasename.EHSIT E, server2.databasename.EHSIDMS S
    WHERE E.SITENUM = S.SITE_CODE
    
    
    
    [serverpath].[database].[databaseobject]
    
  • 0

    我发现使用缓慢变化的维度,将业务键作为您匹配的值以及您希望更新为更改值的其他属性似乎可行 .

    Devtron,我已经尝试过这个并且在服务器路径上遇到错误,其中有很多内容 . 我还被告知,这是非常低调的,特别是如果它是一个经常发生的操作 .

  • 2

    I would use a lookup transformation无需登台 - 无需编写SQL代码 - 这就是SSIS的本意!

相关问题