SSIS导入使用外键数据?
SSIS import using foreign key data?
我有一个旧数据库 (OldDB
),我正在使用 SSIS (2008) 和一个新数据库 (NewDB
) 具有以下设置:
OldDB.Call
有一个名为 Status
的列,该列目前是 varchar(1) 并包含 "C"、"D" 等值
NewDB
现在用外键约束映射它自己的table中所有可能的状态,这样OldDB.Call.Status
现在是NewDB.CallStatus.id
中数据的一个例子NewDB.Call.StatusID
将是 1
、2
、3
等等。
NewDB.CallStatus
现在有一个名为 Status
的列,它包含 A
、B
、C
等的实际 nvarchar(1) 值。
我正在使用 SSIS 迁移数据。到目前为止,我知道我需要对每个源使用排序转换,然后使用合并连接转换将新的 NewDB.Call.StatusID
映射到 OldDB.Call.Status
值。无论出于何种原因,它似乎开始时都很好,但最终会获取其他列(例如描述列)并在其中推送错误类型的数据。简而言之,它没有像应该的那样映射外键。
我在网上找到了很多关于如何执行此操作的示例 (like this),但似乎我遗漏了一些关键信息,无法理解我在做什么因为我一直很无聊。
在一个完美的世界中,循序渐进会很好,但一个好的、简洁的教程或解释也会很有用。 简而言之,我需要知道如何将这两个 table 连接起来并将 OldDB
中的值映射到 NewDB
中的外键并存储该值在 NewDB.CallStatus
.
我将使用查找转换来满足此要求。
在 Lookup 定义中,Connection 将指向您的 NewDB.CallStatus(最佳做法是编写 SELECT,而不是只选择 table - 它缓存元数据)。在列窗格中,将状态映射到状态,然后选择 StatusID 作为查找列。
现在您的数据流会将添加的列传送到下游,您可以传送它(通常使用 OLE DB 目标)。
Lookup 的默认模式是完全缓存,与排序和合并解决方案相比,它会更快并且使用更少的内存。
我有一个旧数据库 (OldDB
),我正在使用 SSIS (2008) 和一个新数据库 (NewDB
) 具有以下设置:
OldDB.Call
有一个名为Status
的列,该列目前是 varchar(1) 并包含 "C"、"D" 等值NewDB
现在用外键约束映射它自己的table中所有可能的状态,这样OldDB.Call.Status
现在是NewDB.CallStatus.id
中数据的一个例子NewDB.Call.StatusID
将是1
、2
、3
等等。NewDB.CallStatus
现在有一个名为Status
的列,它包含A
、B
、C
等的实际 nvarchar(1) 值。
我正在使用 SSIS 迁移数据。到目前为止,我知道我需要对每个源使用排序转换,然后使用合并连接转换将新的 NewDB.Call.StatusID
映射到 OldDB.Call.Status
值。无论出于何种原因,它似乎开始时都很好,但最终会获取其他列(例如描述列)并在其中推送错误类型的数据。简而言之,它没有像应该的那样映射外键。
我在网上找到了很多关于如何执行此操作的示例 (like this),但似乎我遗漏了一些关键信息,无法理解我在做什么因为我一直很无聊。
在一个完美的世界中,循序渐进会很好,但一个好的、简洁的教程或解释也会很有用。 简而言之,我需要知道如何将这两个 table 连接起来并将 OldDB
中的值映射到 NewDB
中的外键并存储该值在 NewDB.CallStatus
.
我将使用查找转换来满足此要求。
在 Lookup 定义中,Connection 将指向您的 NewDB.CallStatus(最佳做法是编写 SELECT,而不是只选择 table - 它缓存元数据)。在列窗格中,将状态映射到状态,然后选择 StatusID 作为查找列。
现在您的数据流会将添加的列传送到下游,您可以传送它(通常使用 OLE DB 目标)。
Lookup 的默认模式是完全缓存,与排序和合并解决方案相比,它会更快并且使用更少的内存。