SSIS:如何更改平面文件连接管理器上的元数据

时间:2015-07-22 17:33:55

标签: ssis

我在BIDS工作。我有一个SSIS包,它循环遍历给定目录中的所有文件,并将所有文件导入到表中。所以,我的控制流有一个Foreach循环容器,里面有一个数据流任务。数据流任务直接从平面文件源到OLE DB目标。因为目录可以更改,所以我使Foreach目录动态化(即,我给它一个包变量,当目录更改时我可以更改它)。 Files字段有类似stuff * .pip的东西,这样就可以导入目录中与该模式匹配的所有文件。 “变量映射”选项卡具有文件名变量,该变量与平面文件连接管理器的表达式中使用的变量相同。

当我最初设置平面文件连接管理器时,我不得不将其指向已存在的文件以获取文件的元数据。然后我将文件连接管理器更改为动态(即,我在Expressions属性中添加了一个文件名变量),以便Foreach循环容器将拾取所有文件(与模式匹配)。

从那时起,文件上的元数据发生了变化。因此,当我打开解决方案文件时,它会在数据流任务中的平面文件源上发出警告。要解决此问题,我必须暂时将平面文件连接更改回硬编码路径,以便我可以更改新文件上的元数据。然后我再次使它动态化(即,使用表达式中的文件名变量,它覆盖硬编码的文件路径)。 (最后,我双击数据流任务中的平面文件源,以自动更新平面文件源中的元数据。)

这是更新平面文件元数据的正确方法吗?对我来说似乎有点笨拙。

1 个答案:

答案 0 :(得分:0)

您可以通过编辑Flat File Manager上的属性并设置ValidateExternalMetaData = False来防止发生此错误。 您可能还需要在包含平面文件管理器的数据流任务中设置DelayValidation = True。

这将阻止警告 - 但如果文件的元数据由于某种原因发生更改(列更改,数据类型更改)并且您不记得更新元数据,那么您将收到运行时错误。