【发布时间】:2010-05-11 18:57:06
【问题描述】:
我是 SSIS 的新手,所以请多多包涵。
我为 SQL Server 2008 创建了一个集成服务项目,以将数据从旧数据库导入新数据库。我需要做的一件事是将两个旧源表中的数据导入到一个新的目标表中。
最好的方法是什么?
我可以通过使用 tsql 的简单内部联接查询轻松查看我想要的结果,但使用 SSIS 包没有任何运气。我目前的方法是一个三步过程:
- 添加从我的第一个源表中提取所有列的 OLE DB 源组件
- 添加一个查找组件,这是我的 OLE DB 源组件之后的下一步。在此,我查询第二个源表“使用 sql 查询的结果”,它不返回空值,然后将外键 id 从“可用输入列”拖到可用查找列中的主键。我还选中了“可用输入列”中的复选框,以添加另外 2 个列。
- 添加 OLE DB 目标,指向我的目标表。
此过程在第一步失败,而不是在查找步骤失败,并失败并出现错误“Row yielded no match during lookup”。外键不能为空,显然主键也不能。我一步一步使用了 SQL 语句,所以我可以确保我没有在列中得到任何空日期值(有一些),但我仍然收到错误。如果我将第一步失败路径输出到平面文件目标,我会得到一个空的 CSV(在调试模式下观看表明大约 60 万条记录进入平面文件)。
在这一点上我很困惑,这似乎应该是超级简单的任务。我在网上搜索了答案,发现这个link 听起来与我遇到的完全相同的问题,但更改缓存设置没有帮助。
帮助表示赞赏!
【问题讨论】:
标签: sql-server-2008 ssis etl