我有一个带OLEDB源代码的DFT-sql表,其列名为description数据类型NVarchar(Max)
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
),则上述代码会出错。
通过此脚本转换,目标是一个以descr为nvarchar(max)
的sql表。
答案 0 :(得分:0)
在脚本组件中,将DT_NTEXT
用作输出列的数据类型,并使用以下代码。
Output0Buffer.TransDescr.AddBlobData(Row.descr.GetBlobData(0, (int)Row.descr.Length))
参考