我是SSIS的新手。当前正在将数据从SQL迁移到Oracle。我们在两个数据库中都有表(具有不同的数据类型)。假设有一位主人(劳斯)和一位孩子(雇员)。我正在将Employee表从SQL迁移到Oracle。 RoleID是Employee表中的FK。
由于Destination数据类型和RoleId与Source不同,因此我需要从Source员工表中获取“ RoleName”,与Destination中的Role Table连接并获取各自的ID。
来源: 员工表-> RoleId(GUID数据类型)
目的地 员工表-> RoleId(整数数据类型)
我尝试使用FuzzyLookup和Lookup,但未在此处获取目标连接管理器的详细信息。还有其他想法如何实现这一目标吗?
谢谢。
表结构:
答案 0 :(得分:2)
为什么使用模糊查找转换,而您可以使用常规查找转换来实现此目的。
模糊查找转换具有局限性,因为引用必须是来自Fuzzy lookup transformation documentation的SQL Server数据库:
参考数据源必须是SQL Server数据库中的表。
基于Lookup transformation documentation:
Lookup转换支持OLE DB连接管理器的以下数据库提供程序:
- SQL Server
- Oracle
- DB2
如果数据不同(这是使用模糊查找的原因),请尝试清理并准备数据以使其与查找参考相匹配。方法很多:
答案 1 :(得分:1)
如果可能的话,最好的解决方法是将源数据原样导入到目标服务器上的登台表中,然后在目标服务器上的过程中将数据导入到最终表中。在过程代码中查找以获取ID。
如果您不能这样做,而必须在SSIS包中完成所有操作,则可以通过向数据流中添加另一个Source组件来做到这一点,该组件从Oracle中的Role表获取数据并进行合并联接到来自SQL Server的数据,在RoleName
上加入以将ID
从Oracle表获取到数据流中。请注意,如果采用这种方式,则必须对“合并联接”键(RoleName
)上的两个源组件进行订购。