使用SSIS 2012。我的平面文件连接管理器有一个分隔文件,其中行分隔符设置为CRLF,但是当它处理该文件时,我有一个文本列,其中包含一个LF。这导致它将其读取为行结束符,导致其失败。有什么想法吗?
发布于 2017-06-05 22:29:11
谢谢你的建议。结果发现,供应商已将文件的编码从Ascii更改为unicode。将包更改为读取正确的编码就可以了。
发布于 2017-05-27 14:47:47
在回答之前,我不认为该列只包含LF,因为如果行分隔符是CRLF,则不会将其视为分隔符。所以这可能是CRLF__,但我会给出这两种情况的解决方案(CRLF或LF)。
解决方案
可以通过以下步骤解决此情况:
DT_STR和length 4000),因此您将每一行视为一列。简单测试
我将考虑一个具有以下内容的平面文件
ID;name;DOB;Notes;ClassID{CRLF}
1;John;2001-01-01;;1{CRLF}
2;Moh;2002-01-01;Very cool{LF}
Genius;2{CRLF}
3;Ali;2000-01-01;Calm;2{CRLF}

Flat File Source,2x Script Component,OLEDB DestinationColumn0标记为input,我将添加5个输出列ID,Name,DOB,Notes,ClassID,并将输出同步输入设置为None


Dim strDelimiter As String = ";"
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Dim strColumns As String() = Row.NewRow.Split(CChar(strDelimiter))
Row.ID = strColumns(0)
Row.NAME = strColumns(1)
Row.DOB = strColumns(2)
Row.NOTES = strColumns(3)
Row.CLASSID = strColumns(4)
End Sub重要注意:提供的代码不是最优的,它可能需要更多的验证,或者可以更简单和更好,但我试图给您提供解决这个问题的方法。
发布于 2017-06-01 16:44:08
我没有SSIS经验,但作为一名ETL开发人员,我曾多次遇到这种情况。因此,我的建议可能无助于你解决问题,但希望能为你指明正确的方向。
https://stackoverflow.com/questions/44164504
复制相似问题