【问题标题】:SSIS Script Component: Microsoft.SqlServer.Dts.Pipeline.BlobColumnSSIS 脚本组件:Microsoft.SqlServer.Dts.Pipeline.BlobColumn
【发布时间】:2011-01-27 22:54:29
【问题描述】:

在 C# 组件上苦苦挣扎。我想要做的是在我的输入源中获取一个用管道分隔的 ntext 列,然后将数组写入文本文件。当我运行我的组件时,我的输出如下所示:

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

我一直在使用 GetBlobData 方法,但我一直在努力解决它。任何帮助将不胜感激!这是完整的脚本:

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

【问题讨论】:

  • 另外我想补充一点,我在 C# 的控制台应用程序中使用常量而不是我的 SSIS 变量编写了这个相同的类,它工作得很好。它只是在那个斑点上窒息。正如您在我的注释代码中看到的那样,我正在试验,但我无法让我的从 blob 到字符串的转换正常工作。
  • 你能用调试器告诉我们Row.Options.ToString()的值吗?

标签: c# sql ssis


【解决方案1】:

尝试使用

BlobToString(Row.Options)

使用此功能:

  private string BlobToString(BlobColumn blob)
    {
        string result = "";
        try
        {
            if (blob != null)
            {
                result = System.Text.Encoding.Unicode.GetString(blob.GetBlobData(0, Convert.ToInt32(blob.Length)));
            }
        }
        catch (Exception ex)
        {
            result = ex.Message;
        }
        return result;
    }

改编自: http://mscrmtech.com/201001257/converting-microsoftsqlserverdtspipelineblobcolumn-to-string-in-ssis-using-c

【讨论】:

    【解决方案2】:

    另一个非常简单的解决方案是,因为它是一个总 PITA,所以将错误输出路由到派生列组件,并将 blob 数据转换为 STR 或 WSTR 作为新列。

    将其输出路由到您的脚本组件,数据将作为管道上的附加列进入,供您解析。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-12
      • 1970-01-01
      • 2011-01-18
      • 2011-01-17
      相关资源
      最近更新 更多