将两个表与SSIS组合到一个目标表中

时间:2010-05-11 18:57:07

标签: sql-server-2008 ssis etl

我是SSIS的新手,所以请耐心等待。

我为SQL Server 2008创建了一个Integration Services项目,用于将数据从旧数据库导入到新数据库。我需要做的一件事是将两个旧源表中的数据导入一个新的目标表。

最好的方法是什么?

我可以使用tsql通过简单的内部联接查询轻松查看我想要的结果,但使用SSIS包没有任何运气。我目前的方法是一个三步过程:

  1. 添加从我的第一个源表中提取所有列的OLE DB Source组件
  2. 添加一个Lookup组件,这是我的OLE DB Source组件之后的下一步。在此我查询第二个源表'使用sql查询的结果'不返回空值,然后将外键id从'可用输入列'拖动到可用查找列中的主键。我还会检查“可用输入列”中的复选框,再添加2列。
  3. 添加OLE DB目标,指向我的目标表。
  4. 此过程在第一步失败,而不是在查找步骤,并且失败并显示错误“行在查找期间没有匹配”。外键不能为空,显然主键也不能。我在步骤中使用了一个SQL语句,所以我可以确保我没有在列中得到任何空值日期(有一些),但我仍然得到错误。如果我将第一步失败路径输出到平面文件目的地,我会得到一个空的CSV(在调试模式下观看表示~600k记录进入平面文件)。

    我在这一点上很难过,这似乎应该是超级简单的任务。我已经在网上搜索了答案,并发现这个link听起来与我遇到的问题完全相同,但更改缓存设置并没有帮助。

    帮助表示赞赏!

1 个答案:

答案 0 :(得分:3)

听起来你的查找不匹配。我手动运行查询并验证OLE DB SOurce都没有空的foriegn键;并且每个外键都匹配查找表中的内容。

这里有一个更简单的方法。使用您在OLE DB SOurce中提到的内部联接查询。不要使用表选择,提供带有连接的SQL查询。这让SQL Server完成了所有繁重的连接,然后SSIS可以进行传输。

相关问题