该查询仅用于插入新记录。
如何使用此查询?当使用4个不同的数据源(数据库)(如数据库A,B,C和D)时,sql脚本是否位于执行SQL任务:SQL命令任务或OLE DB源:SQL命令任务中。
在解决方案资源管理器下的数据源中,我在一台服务器下添加了四个数据库,这些数据库是数据库A,B,C和D.是否可以在OLE DB连接管理器中添加四个具有四个相应数据源的数据库??
OLE DB connection manager: Database/Data Source A, B, C, D <--- Is this possible??
Data Access Mode:
SQL Command
SQL Command Text:
Insert into DWResourceTask.dbo.DimEntity
select
a.EntCode,
a.Name,
a.Active,
a.AccessLevel,
a.SiteURN,
a.CompanyURN,
a.SiteName,
a.SiteDesc,
a.SiteURL
from
(Select e.EntCode, e.Name, e.Active, e.AccessLevel, ss.SiteURN, ss.CompanyURN,
ss.SiteName, ss.SiteDesc, ss.SiteURL
from A.dbo.Site ss, A.dbo.LegalEnt e
where ss.localsiteflag = 1
and e.active = 1
UNION ALL
Select e.EntCode, e.Name, e.Active, e.AccessLevel, ss.SiteURN, ss.CompanyURN,
ss.SiteName, ss.SiteDesc, ss.SiteURL
from B.dbo.Site ss, B.dbo.LegalEnt e
where ss.localsiteflag = 1
and e.active = 1
UNION ALL
Select e.EntCode, e.Name, e.Active, e.AccessLevel, ss.SiteURN, ss.CompanyURN,
ss.SiteName, ss.SiteDesc, ss.SiteURL
from C.dbo.Site ss, C.dbo.LegalEnt e
where ss.localsiteflag = 1
and e.active = 1
UNION ALL
Select e.EntCode, e.Name, e.Active, e.AccessLevel, ss.SiteURN, ss.CompanyURN,
ss.SiteName, ss.SiteDesc, ss.SiteURL
from D.dbo.Site ss, D.dbo.LegalEnt e
where ss.localsiteflag = 1
and e.active = 1
)a
where not exists (select * from DWResourceTask.dbo.DimEntity w
where(a.EntCode=w.EntCode
and a.Name=w.Name
and a.Active=w.Active
and a.AccessLevel=w.AccessLevel
and a.SiteURN=w.SiteURN
and a.CompanyURN=w.CompanyURN
and a.SiteName=w.SiteName
and a.SiteDesc=w.SiteDesc
and a.SiteURL=w.SiteURL))
请帮助。在此先感谢!
答案 0 :(得分:3)
我将为您详细说明数据流任务。希望这会有所帮助。
将数据流任务放入工作流程。我的下面称为“将CSV加载到SQL RawData表”。
在数据流任务中,添加您的来源(来源)和目的地。这些可以是平面文件,数据库连接等。
在原点中,选择您要包含的连接和列。
打开目的地,然后选择数据将要进入的连接和表格。
接下来,将原始列映射到目标列。您可以手动执行此操作,也可以通过右键单击和匹配名称来执行此操作。就是那种联系。
作为整个流程的一部分,为您的其他来源和目的地重复此过程。
测试您的SSIS包,然后部署。
答案 1 :(得分:0)
这不是您使用Execute SQL Task
所取得的成就!但是可以使用Data Flow Task
轻松完成,而这只是SSIS的主要思想 - 避免使用这种复杂的SQL表达式。
为每个数据库创建连接A,B,C,D,DWResourceTask,目的地
为每个数据库放置单独的数据源:A,B,C,D。填写select语句,并Union All
全部。
where not exists
部分可以通过查找DWResourceTask.dbo.DimEntity来完成。 No match output
会为您提供正确的记录。
将数据目标放在行的上方。
答案 2 :(得分:0)
我创建了一个查看两个源的视图,然后视图成为我的单一来源。
我宁愿让SQL Server为我做好工作,也不要让SSIS进行数据传输。