4

我有一个平面文件源,它正在从平面文件中读取数据。我们最近在此平面文件中添加了一个新列。

平面文件数据被插入到数据库表中。为了适应目标组件中的新字段,我使用该ALTER TABLE语句将新列添加到表中。这是我所做的唯一改变。

平面文件和目标组件之间的映射是否应该自动更改?我在 SSIS 包中的任何地方都看不到平面文件中存在的附加列。

如何在 SSIS 包内的平面文件中配置附加列,以便平面文件源可以将数据传递到目标组件?

4

3 回答 3

14

如果您向平面文件添加了新列,则需要更新Flat File Connection Manager以反映新更改。平面文件连接管理器将出现在Connection Manager包底部的选项卡下。

使用 SSIS 2012 说明的示例场景:

假设您有一个包含StateCodeStateName列的平面文件。

初始平面文件

配置时Flat File Connection Manager,您将看到在高级选项卡页面下配置的这些列,如下所示。

初始连接管理器

如果您修改平面文件以添加额外的列,例如添加名为CountryCode的新列。

最终平面文件

平面文件连接管理器将不包含新的列定义。您需要打开平面文件连接管理器来添加新列,或者您可以删除平面文件连接管理器并使用新的平面文件列定义创建一个新的连接管理器。

您需要单击新建并选择适当的选项来插入该列。您不能移动列位置。因此,请确保选择正确的选项来添加列。设置适当的属性来定义列。

最终连接管理器

当您修改源或目标模式时,它将影响数据流任务中的源和目标组件。您可能会在组件上看到如下所示的警告图标,因为该组件与其关联的连接管理器的元数据信息不同步。

双击显示警告的组件,然后单击编辑器上的确定以解决映射问题。

来源警告

希望有帮助。

于 2013-02-20T16:14:05.573 回答
1

当您更改底层组件(例如平面文件或数据库)的元数据时,SSIS 不会自动刷新所有可用列。您必须手动执行此操作。

  1. 打开源组件的编辑器并导航到“列”属性(左侧)并验证平面文件中的所有外部列都存在并被选为输出列。
  2. 对目标组件的 Mappings 属性窗口重复此过程。验证所有平面文件列都映射到正确的目标列。
于 2013-02-20T15:41:23.213 回答
1

更新平面文件源中的列的最简单方法是重置平面文件连接上的列。

  1. 从连接管理器打开您的平面文件连接
  2. 选择列(在常规下方)
  3. 单击重置列 - 这将包括任何新列。

当然,如果您对数据类型等进行了自定义更改,则需要小心。

于 2014-10-14T10:42:16.003 回答