【问题标题】:dt_text to dt_str conversion using c# in Script component SSIS在脚本组件SSIS中使用c#将dt_text转换为dt_str
【发布时间】:2014-04-10 03:48:34
【问题描述】:

我正在尝试使用 scriptcomponent SSIS 在 C# 中将 dt_text (blob) 转换为 dt_str varchar(max),我不能使用数据转换转换,因为它将字符限制为 8000 个字符,我在文本字段中有重要信息超过10000 个字符(大量笔记信息)。

我从网上发布的示例开始

using System;
using System.Data;
using System.Text.RegularExpressions;    // Added
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
// Method that will be executed for each row.
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    if (!Row.Description_IsNull) 
    {
        cont.description = 
            System.Text.Encoding.Unicode.GetString(
                Row.Description.GetBlobData(
                    0, Convert.ToInt32(Row.Description.Length)));
    } 
}

在构建时,我收到以下错误消息,不确定我在这里缺少什么。我是 C# 代码的新手.. (错误 2“字符串”不包含“GetBlobData”的定义,并且找不到接受“字符串”类型的第一个参数的扩展方法“GetBlobData”(您是否缺少 using 指令或程序集引用?) )

提前致谢

【问题讨论】:

    标签: c# ssis


    【解决方案1】:

    您确定输入行上的“描述”列是 DT_TEXT 吗?检查您的输入。 GetBlobData 是“BlobColumn”数据类型的一种方法 - 看起来源列属于“String”数据类型。查看 BufferWrapper.cs 生成的文件,看看是否存在 BlobColumn 类型的列。如果没有,则需要检查输入字段。

    【讨论】:

    • 我试图通过在 sql 查询和 DFT 的高级选项中强制转换来将数据类型更改为 varchar(max),我已将其强制为 dt_str(8k) 字符,但现在描述列位于DT_TEXT 和我仍然有相同的错误信息。 ****找不到类型或命名空间名称“描述”(您是否缺少 using 指令或程序集引用?)***
    • VARCHAR(MAX) dt_text。如果您往返于 VARCHAR(MAX),则根本不要转换它。 dt_str 是 VARCHAR(8000)。这里有很好的信息:stackoverflow.com/questions/14705639/…
    • 您需要将其设为 DT_STR 的确切问题是什么?
    • 在我选择不同的记录之前,我应该在我的 sql 查询中转换“ntext”中的源列,所以我将它转换为 varchar(max) 并将它推到下游列通过的地方包含 C# 正则表达式的脚本组件,可删除此类 HTML 标记并仅处理 SQL SERVER ** 更新 SQL SERVER- **updated

      最初业务正常8k 个字符,但重要信息在 9k 到 15k 之间,所以需要全部

    猜你喜欢
    • 2013-10-29
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多