【问题标题】:Load data from Table with column NVARCHAR(MAX) - Cannot convert to string as value is getting truncated从包含 NVARCHAR(MAX) 列的表中加载数据 - 由于值被截断,因此无法转换为字符串
【发布时间】:2019-06-20 05:46:54
【问题描述】:

我有一个带有 OLEDB 源的 DFT - 列名为描述数据类型 NVarchar(Max) 的 sql 表

select max(len(description)) from tbl_Test -- returns 10,000

脚本转换编辑器执行转换

Output0Buffer.AddRow();
        Output0Buffer.TransId = Row.id;
        System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding();
// i am splitting a column here into multiple records - no issues here
        byte[] bytes = Row.descr.GetBlobData(0, (int)Row.descr.Length);
        string myString = encoding.GetString(bytes);
        Output0Buffer.TransDescr = myString;

如果输出列是DT_WSTR,则此代码可以正常工作,但问题是这里的最大值是8000,因此运行时错误会导致文本被截断,它确实会执行我不想要的操作。

如果我将输出列作为文本流DT_NTEXT) 上面的代码给出错误。

从这个脚本转换中,目标是一个描述为nvarchar(max) 的sql 表。

【问题讨论】:

    标签: sql-server ssis etl script-component ntext


    【解决方案1】:

    在脚本组件中使用DT_NTEXT作为输出列的数据类型,并使用以下代码。

    Output0Buffer.TransDescr.AddBlobData(Row.descr.GetBlobData(0, (int)Row.descr.Length))
    

    参考文献

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 2023-02-05
      • 1970-01-01
      • 2022-12-11
      • 2019-08-08
      • 1970-01-01
      相关资源
      最近更新 更多