Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#SSIS数据流组件-创建自定义输入列_C#_Ssis - Fatal编程技术网

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

C#SSIS数据流组件-创建自定义输入列,c#,ssis,C#,Ssis,我试图创建我的第一个数据流组件,它将获取一个输入地址,通过pafapi运行它,并从文件源或db表中吐出正确格式的地址和原始输入列 我需要以特定格式提供源输入地址,因此我需要用户将源输入列映射到特定的自定义输入列。我能够使用input.ExternalMetadataColumnCollection创建自定义输入列,这很有效。但是,现在有人告诉我,我需要提供一个选项,将源文件中的所有可用列都包含为输出列 我已尝试创建列映射选项卡中显示的其他输入列,但我没有创建所有可用的源输入列。以下是我到目前为止

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

我需要以特定格式提供源输入地址,因此我需要用户将源输入列映射到特定的自定义输入列。我能够使用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;

我找到了一种方法。如果你能建议一个更好的方法,我洗耳恭听。我只需要将自定义输入列名称设置为只读。我用了下面的方法

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

要重申,您的组件将始终向输出集合添加N个新列,但您可能还需要保留原始列?我需要保留原始源输入列和它们的值。我需要确保某些输入列映射到自定义输入列。i、 e.与源输入列一样,addressLine1、addressLine2、addressLine3映射到自定义输入列AddressLineOne、addressLine2、AddrssLineThree。我需要这样做,因为地址必须是paf api正确工作的特定格式,即邮政编码前的HouseNo。走出组件,您将拥有原始的addressLine1列(沿袭ID 100),但您也将拥有新的AddressLineOne列(沿袭ID 200)它是从您的组件生成的,包含正确的地址。我已经有一段时间没有编写自定义组件了,所以我试图确保我理解这个问题。是的,我需要用户将addressLine1列映射到新列AddressLineOne。我发现我可以使用input.ExternalMetaDataColumnCollection生成自己的列,但我丢失了源生成的输入列。当我尝试使用idtInputColumnCollection添加一些新的输入列时,源列丢失了。+1只是因为我找不到如何在internet上的任何其他地方指定自定义输入列!