C#SSIS数据流组件 - 创建自定义输入列

时间:2012-09-25 17:00:12

标签: c# ssis

我正在尝试创建我的第一个数据流组件,该组件将通过PAF api运行输入地址,并从文件源或db表中吐出格式正确的地址和原始输入列。

我需要以特定格式提供源输入地址,因此我需要用户将源输入列映射到特定的自定义输入列。我能够使用input.ExternalMetadataColumnCollection创建自定义输入列,这很有效。但是我现在被告知我需要提供包含源文件中所有可用列的选项作为输出列。

我尝试创建出现在Column Mapping选项卡中的其他输入列,但我并不是所有的源输入列都可用。以下是我到目前为止所尝试的内容。任何建议将不胜感激。所以我的问题是如何添加其他自定义输入列以及包括所有源列?

            IDTSExternalMetadataColumnCollection100 externalInput = input.ExternalMetadataColumnCollection;
        externalInput.IsUsed = true;

        IDTSExternalMetadataColumn100 externalInputColumn = externalInput.New();
        externalInputColumn.Name = constInputAddressLineOne;
        externalInputColumn.DataType = DataType.DT_WSTR;

        externalInputColumn = externalInput.New();
        externalInputColumn.Name = constInputAddressLineTwo;
        externalInputColumn.DataType = DataType.DT_WSTR;

1 个答案:

答案 0 :(得分:2)

我找到了一种方法。如果你可以建议一个更好的方式,我会全神贯注。我只需要将自定义输入列名称设置为只读。我使用了以下内容。

 public override void OnInputPathAttached(int inputID)
    {
        IDTSInput100 input = ComponentMetaData.InputCollection[0];

        IDTSVirtualInput100 vInput = input.GetVirtualInput();

        IDTSExternalMetadataColumnCollection100 externalColumnCollection = input.ExternalMetadataColumnCollection;
        IDTSExternalMetadataColumn100 externalColumn;                

        foreach (IDTSVirtualInputColumn100 vCol in vInput.VirtualInputColumnCollection)
        {            
            externalColumn = externalColumnCollection.New();
            externalColumn.Name = vCol.Name;
            externalColumn.DataType = vCol.DataType;               
        }
    }