【问题标题】:SSIS: How to change metadata on flat file connection managerSSIS:如何更改平面文件连接管理器上的元数据
【发布时间】:2015-07-22 17:33:54
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ssis


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-28
      • 2013-06-12
      • 1970-01-01
      • 2014-12-27
      • 2016-01-27
      • 1970-01-01
      • 2023-04-11
      • 2012-08-02
      • 2016-03-28
      相关资源
      最近更新 更多