3

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

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

我已尝试创建出现在“列映射”选项卡中的其他输入列,但并非所有源输入列都可用。以下是我迄今为止尝试过的。任何建议将不胜感激。所以我的问题是如何添加额外的自定义输入列以及包括所有源列?

            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;
4

1 回答 1

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;               
        }
    }
于 2012-09-26T09:49:18.470 回答