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

Posted

技术标签:

【中文标题】如何重新配置​​平面文件连接管理器上的列信息?【英文标题】:How to reconfigure the column information on a flat file connection manager? 【发布时间】:2013-02-05 15:56:03 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

当你配置Flat File Connection Manager时,你会看到在高级标签页下配置了这些列,如下图所示。

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

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

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

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

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

希望对您有所帮助。

【讨论】:

感谢 Siva 非常有帮助。我还有一个问题。当我尝试将 column Delimiter 更改为 Vertical bar 时,它给了我一个错误,说行消除器不能与列分隔符相同。我想将其更改为垂直条。我该怎么办?【参考方案2】:

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

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

【讨论】:

谢谢凯尔!平面文件有额外的列。我在数据库中的表中添加了 Alter,这是我的目的地。但我在 ETL 的源端(平面文件)中看不到该列。如何在 ETL 中添加额外的列,以便与目的地进行映射?【参考方案3】:

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

    从连接管理器打开您的平面文件连接 选择列(在常规下方) 点击重置列 - 这会包括所有新列。

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

【讨论】:

以上是关于如何重新配置​​平面文件连接管理器上的列信息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在平面文件连接管理器编辑器中使用设置行和列分隔符

无法在 SSIS 2017 中的 excel 连接管理器上使用表达式

SSIS条件拆分为平面文件目的地

如何在 C++ 中更改任务管理器上的进程名称?

如何在 gnu arm eclipse 或 cdt 上的项目资源管理器上设置或替换文件?

SSIS 包顽固的平面文件连接管理器