SSIS PKG用更少的列会失败平面文件连接(SSIS pkg with flat-file con

2019-07-29 12:14发布

假设平面文件F1.txt,柱MyCol1和一个包PKG1加载所述文件到SQL服务器。

没问题吧? 对。

现在假设一个平面文件F2.txt,列MyCol1,MyCol2及相同的封装PKG1加载所述文件到SQL Server。

我们将去PKG1和急一些调整 - 它加载F2.txt像做梦一样。

现在我们F1.txt给它,这就是在事情恶化。

顺便说一句,这并不只限于平面文件,但是是一个更具普遍性的。

关于如何在同一封装内运行旧数据的任何和所有建议都欢迎。

TIA

彼得

Answer 1:

它读起来就像你在这里有两个问题。 首先是了解如何使用连接管理器。 对于平面文件输入,您通常会创建每个文件布局中的连接管理器得到更好的服务。 文件1的样子(列1)和文件2的样子(列1,列2)? 这意味着,2个不同的平面文件连接管理器需要定义。

如果你有2个版本的文件2,一个在哪里列1号有,另一个列1包含字符数据,这些将需要两个独特的连接管理器(共3)。

相对于上面的好消息是,文件名的变化是微乎其微的,并不需要一个独特的连接管理器中创建。 F1.txt,F1_20120501.txt,F1.good.txt等将​​全部由您已经为该布局定义的连接管理器提供服务。 你只需要使用一个给定的连接管理器的ConnectionString属性的表达式来更新当前的包在运行时。

所以,现在你有所有这些平面文件连接管理器,您需要使用它们。 这奇迹发生在数据流任务。 数据流是关于它使用的元数据真实小气。 当你在设计一个数据流,你是一个合同,SSIS如果你试图通过使字符字段为日期字段或不提供所有列违反它,包会,你不是抱着失败的验证检查你交易的目的。 该决议的情况是,你再要需要定义在你的包需要的各种连接管理多个数据流。

与所有的定义,你只需要一个协调器查看源文件,以确定哪些数据流应该被执行。 我提供了关于这个问题的一个例子创建SSIS包从许多数据源导入一个

还有,我提议,可能是利益的解决方案类似的问题不一致的列数进口SSIS任务? 这真的取决于你的规则进行处理。

如果你正试图巩固您的SSIS包/重用的业务逻辑,然后我会看看使用各种数据流阶段性离散源成一个单一的数据存储的东西(原始文件的办法,临时表有很多空列等)。



文章来源: SSIS pkg with flat-file connection with fewer columns will fail
标签: ssis