2013-03-18 87 views
0

我有一个SSIS 2005数据流和一个DT_TEXT列,我需要在其中执行一些字符串替换。我试图在派生列任务中这样做,但是这样的表达式将列的大小限制为4000个字符。否则,会发生截断错误。在SSIS 2005中优化脚本转换

REPLACE(REPLACE(REPLACE((DT_STR, 4000, 1252) [COMMENT],"&","&"),"	","\t"),"
","\n") 

所以我转向了脚本转型做相同的字符串替换如下所示:

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 

    Dim blobData() As Byte = Row.COMMENT.GetBlobData(0, CInt(Row.COMMENT.Length)) 
    Dim blobString As String = Encoding.Unicode.GetString(blobData) 

    blobString.Replace("&", "&").Replace("	", "\t").Replace("
", "\n") 

    Row.SCRUBBEDCOMMENT.AddBlobData(Encoding.Default.GetBytes(blobString)) 

End Sub 

这工作得很好,但它SOOOOO缓慢。我能做些什么来加速它?或者这可以在没有截断的SSIS表达式中完成?

感谢,

比尔

+0

为什么在将数据装载到db之后不做转换?如果只是你的包中不需要这个已经变形的字符串,这将会更快。 – 2013-03-18 15:30:41

回答

0

其实,我想出了一个快速的方法来加快速度......就叫只有当更换作出AddBlobData方法。就我而言,我并不期望会有很多替代品。这肯定会加速转型。希望这有助于他人。

Bill