0

我正在使用 SSIS 将 FoxPro 表导入 SQL Server 2008。源数据是我无法控制的专有数据库。让我们调用我正在导入客户的表。

有时,客户的结构如下所示:

编号(整数)

名称(字符(30))

地址 (char(30))

城市 (char(20))

状态(字符(2))

邮编(字符(10))

CCNUM(字符(16))

其他时候,它看起来像这样:

编号(整数)

名称(字符(30))

地址 (char(30))

城市 (char(20))

状态(字符(2))

邮编(字符(10))

CCPTR (char(100))

这个专有数据库基本上有 2 个不同版本的数据库。旧版本有一个名为 CCNUM(信用卡号)的字段,它是一个基本的 16 个字符字段。较新的版本用一个名为 CCPTR 的字段替换了该字段,该字段是一个 100 个字符的字段,表示一个卡指针(实际信用卡号的加密值)。

这里的问题是每次我必须在具有这些不同表结构的 2 个数据集之间来回切换时,SSIS 就会崩溃,我必须进入并手动刷新元数据。

我的问题是,无论如何我可以让 SSIS 在运行时动态查找这些字段之一,并根据其中一个字段,将正确的数据加载到 SQL 中正确的表结构中吗?

如果以前有人问过这个问题,请原谅我。我对 SSIS 还是很陌生,我尝试搜索这个答案但无济于事。

谢谢,

标记

4

2 回答 2

0

如果您根据长度 (100) 构建包并在 (16) 上调整它,您应该只会收到警告。你有错误吗?

于 2012-07-25T08:44:09.577 回答
0

最简洁的答案是不。SSIS 预计其源和目标组件的元数据不会发生重大变化。有一些方法可以通过 .NET 以编程方式影响这一点,但这种方式没有抓住重点。

此问题的一个设计良好的解决方案是创建 2 个单独的数据流,将数据复制到共享暂存表中。使用此临时表作为源来转换您的数据并将其推送到其最终数据结构。

于 2012-07-25T08:42:06.580 回答