假设有一个平面文件 F1.txt、Column MyCol1 和包 Pkg1 将所述文件加载到 SQL Server。
没问题吧?正确的。
现在假设有一个平面文件 F2.txt、Columns MyCol1、MyCol2 和相同的包 Pkg1 将所述文件加载到 SQL Server。
我们将对 Pkg1 和 presto 进行一些调整 - 它像梦一样加载 F2.txt。
现在我们给它提供 F1.txt,这就是事情恶化的地方。
顺便说一句,这并不局限于平面文件,而是具有更普遍的性质。
欢迎有关如何在同一包中运行遗留数据的任何建议。
TIA
Peter
看起来你这里有两个问题。首先是了解如何使用连接管理器。对于平面文件输入,通常可以通过为每个文件布局创建一个连接管理器来为您提供更好的服务。文件 1 看起来像 (Column1),文件 2 看起来像 (Column1, Column2)?这意味着需要定义 2 个不同的平面文件连接管理器。
如果您有 2 个版本的文件 2,其中一个版本的 Column1 包含数字,另一个版本的 Column1 包含字符数据,则这些版本将需要 2 个唯一的连接管理器(总共 3 个)。
与上述相关的好消息是文件名更改很简单,并且不需要创建唯一的连接管理器。 F1.txt、F1_20120501.txt、F1.good.txt 等都将由您为该布局定义的连接管理器提供服务。您只需使用给定连接管理器的 ConnectionString 属性上的表达式即可在运行时更新当前包。
现在您已经拥有了所有这些平面文件连接管理器,您需要使用它们。这种魔力发生在数据流任务中。数据流对于其中使用的元数据非常挑剔。当您设计数据流时,您正在与 SSIS 签订合同,如果您尝试通过将字符字段设置为日期字段或不提供所有列来违反该合同,则该包将无法通过验证检查,因为您没有持有完成你的讨价还价。解决这个问题的方法是,您再次需要围绕包所需的各种连接管理器定义多个数据流。
定义完所有内容后,您只需要一个协调器来查看源文件以确定应执行哪个数据流。我就这个问题提供了一个例子创建 SSIS 包以从多个数据源之一导入
还有一个类似的问题,我提出了一个可能感兴趣的解决方案SSIS 任务导入不一致的列数?这实际上取决于您的处理规则。
如果您尝试在 SSIS 包中合并/重用业务逻辑,那么我会寻找一种使用各种数据流将离散源暂存到单个数据存储中的方法(原始文件、具有大量空列的暂存表等) )。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)