2011-01-27 77 views
4

用C#组​​件挣扎。我想要做的是在我的输入源中使用管道分隔的ntext列,然后将数组写入文本文件。当我运行我的分量我的输出是这样的:SSIS脚本组件:Microsoft.SqlServer.Dts.Pipeline.BlobColumn

DealerID,StockNumber,Option 
161552,P1427,Microsoft.SqlServer.Dts.Pipeline.BlobColumn 

香港专业教育学院一直与GetBlobData方法和IM与它挣扎。任何帮助非常感谢!以下是完整的脚本:

public override void Input0_ProcessInputRow(Input0Buffer Row) 
{ 
    string vehicleoptionsdelimited = Row.Options.ToString(); 
    //string OptionBlob = Row.Options.GetBlobData(int ; 
    //string vehicleoptionsdelimited = System.Text.Encoding.GetEncoding(Row.Options.ColumnInfo.CodePage).GetChars(OptionBlob); 
    string[] option = vehicleoptionsdelimited.Split('|'); 
    string path = @"C:\Users\User\Desktop\Local_DS_CSVs\"; 

    string[] headerline = 
    { 
     "DealerID" + "," + "StockNumber" + "," + "Option" 
    }; 

    System.IO.File.WriteAllLines(path + "OptionInput.txt", headerline); 

    using (System.IO.StreamWriter file = new System.IO.StreamWriter(path + "OptionInput.txt", true)) 
    { 
     foreach (string s in option) 
     { 
      file.WriteLine(Row.DealerID.ToString() + "," + Row.StockNumber.ToString() + "," + s); 
     } 
    } 
+0

另外我想补充一点,我在C#中的控制台应用程序中使用常量代替我的SSIS变量编写了这个相同的类,并且它工作得很好。它只是窒息在那个斑点上。正如您在我的评论代码中看到的,我正在尝试,但我无法从blob转换为字符串以正常工作。 – Zach 2011-01-27 22:56:27

回答

1

另外一个很容易解决这个问题,因为它是一个总PITA,是将错误输出路由到一个de riged列组件,并将您的blob数据转换为STR或WSTR作为新列。

将其输出路由到您的脚本组件,并且数据将作为流水线上的附加列来进行分析。

这可能只适用于您的数据少于8000个字符长的情况。