使用外键数据导入SSIS?

时间:2015-05-21 14:03:01

标签: ssis foreign-key-relationship

我有一个旧数据库(OldDB),其中包含一个表(我称之为Call),我正在使用SSIS(2008)和一个新数据库({{ 1}})使用以下设置:

  • NewDB有一个名为OldDB.Call的列,当前为varchar(1),其值包含&#34; C&#34;,&#34; D&#34;等< / LI>
  • Status现在使用外键约束映射其自己表中的所有可能状态,以便NewDB现在为OldDB.Call.Status NewDB.CallStatus.id中的数据示例是NewDB.Call.StatusID12等等。
  • 3现在有一个名为NewDB.CallStatus的列,它保存实际的nvarchar(1)值StatusAB等。

我使用SSIS迁移数据。到目前为止,我知道我需要为每个源使用Sort转换,然后使用Merge Join转换将新C映射到NewDB.Call.StatusID值。无论出于何种原因,它似乎开始很好但最终会抓住其他列(例如描述列)并在那里推送错误类型的数据。简而言之,它不像它应该那样映射外键。

我在网上发现了很多关于如何做到这一点的例子(like this),但似乎我错过了一些重要的关键信息,以便了解我和# 39;我这样做是因为我一直在蠢蠢欲动。

在一个完美的世界中,一步一步会很棒但是一个简洁的教程或解释也会很有用。 简而言之,我需要知道如何将这两个表挂钩,并将OldDB.Call.Status中的值映射到OldDB中的外键,并将该值存储在NewDB中。

1 个答案:

答案 0 :(得分:1)

我会使用查找转换来满足此要求。

在Lookup定义中,Connection将指向您的NewDB.CallStatus(编写SELECT是最佳实践,而不仅仅是选择表 - 它会缓存元数据)。在“列”窗格上,将“状态”映射到“状态”,然后选择“StatusID”作为“查找”列。

现在,您的数据流将在下游传输添加的列,您可以将其传递(通常使用OLE DB目标)。

Lookup的默认模式是Full Cache,与Sort&amp; amp;相比,它将更快,使用更少的内存。合并解决方案。