如何在平面文件连接管理器上重新配置列信息?

时间:2013-02-20 15:18:42

标签: ssis etl dataflow

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

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

平面文件和目标组件之间的映射是否会自动更改?我没有在SSIS包中的任何位置看到平面文件中存在其他列。

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

3 个答案:

答案 0 :(得分:14)

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

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

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

Initial flat file

配置Flat File Connection Manager后,您会在高级标签页下看到这些列配置,如下所示。

Initial Connection Manager

如果您修改平面文件以添加其他列,请添加名为 CountryCode 的新列。

Final flat file

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

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

Final connection manager

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

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

Source warning

希望有所帮助。

答案 1 :(得分:1)

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

  1. 打开源组件的编辑器并导航到“Columns”属性(在左侧)并验证平面文件中的所有外部列是否存在并被选为输出列。
  2. 对目标组件的Mappings属性窗口重复此过程。验证所有平面文件列是否已映射到正确的目标列。

答案 2 :(得分:0)

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

  1. 从连接管理器打开平面文件连接
  2. 选择列(常规下方)
  3. 点击重置列 - 然后包含任何新列。
  4. 当然,如果您对数据类型进行了自定义更改,那么您需要小心。等等。