我正在使用SSIS将FoxPro表导入SQL Server 2008。源数据是我无法控制的专有数据库。让我调用我正在导入客户的表。
有时,客户的结构如下所示:
ID(int)
NAME(char(30))
ADDRESS(char(30))
CITY(char(20))
STATE(char(2))
ZIP(char(10))
CCNUM(char(16))
其他时候,它看起来像这样:
ID(int)
NAME(char(30))
ADDRESS(char(30))
CITY(char(20))
STATE(char(2))
ZIP(char(10))
CCPTR(char(100))
这个专有数据库基本上有2个不同版本的数据库。旧版本有一个名为CCNUM(信用卡号)的字段,它是一个基本的16字符字段。较新的版本用一个名为CCPTR的字段替换了该字段,该字段是一个100字符的字段,表示卡指针(实际信用卡号的加密值)。
这里的问题是每次我必须在具有这些不同表结构的2个数据集之间来回切换时,SSIS会爆炸,我必须进入并手动刷新元数据。
我的问题是,无论如何我可以让SSIS在运行时动态查找其中一个字段,并根据哪个字段,将正确的数据加载到SQL中的正确表结构中?
如果之前有人问过,请原谅我。我仍然是SSIS的新手,我试着寻找这个答案,但无济于事。
谢谢,
标记
答案 0 :(得分:0)
简短的回答是否定的。 SSIS期望其源和目标组件的元数据没有重大变化。有一些方法可以通过.NET以编程方式对此进行影响,但这种方法忽视了这一点。
针对此问题的精心设计的解决方案是创建2个单独的数据流,将数据复制到共享的临时表中。使用此临时表作为源来转换数据并将其推送到最终的数据结构。
答案 1 :(得分:0)
如果你根据长度(100)构建你的包并在(16)上打开它,你应该只得到一个警告。你收到错误吗?