我有一个尴尬的平面文件输入,几乎可以是任何长度。这是一个逗号分隔的文件,但是嵌入了由"{“和"}”或"{“和"}”分隔的表。取决于表类型。我不能使用现成的SSIS逗号分隔的平面文件,因为可能有记录,根本没有嵌入式表。为了解决这个问题,我将平面文件的输入设置为“乱七八糟”,其中一列有8,000个字符。
然后,我在脚本组件中执行字符串拆分,并将表数据输出到不同的输出流。
然而,我现在正在接收超过8000字符的文件,这些文件破坏了我的进程。
我尝试用NTEXT中的列将"1252 (ANSI拉丁文1)“中的平面文件转换为unicode。
然后,我插入了以下代码,以将其转换为字符串(参见http://www.bimonkey.com/2010/09/convert-text-stream-to-string/ )
Dim TextStream As Byte() ' To hold Text Stream
Dim TextStreamAsString As String ' To Hold Text Stream converted to String
' Load Text Stream into variable
TextStream = Row.CopyofColumn0.GetBlobData(0, CInt(Row.CopyofColumn0.Length))
' Convert Text Stream to string
TextStreamAsString = System.Text.Encoding.Unicode.GetString(TextStream)但是,当我看到字符串,我得到了很多汉字类型的字符,没有行提要。
有什么我可以尝试的吗?
发布于 2017-05-26 13:11:50
您可以使用脚本源组件来打开带有文件系统对象的文件,而不是使用平面文件源。
发布于 2017-05-26 14:47:20
由于我发现很难在SSIS vb.net脚本组件源代码转换中找到与使用文件系统对象完全匹配的对象,所以我想我应该分享我的发现!
需要下列进口
Imports System.IO
Imports System.Text还有密码..。
Public Overrides Sub CreateNewOutputRows()
<Output Name>Buffer".
Dim strFilePath As String
Dim strFileContent As String
Dim objFileInfo As FileInfo
Dim objStreamReader As StreamReader
Try
strFilePath = "c:\myfile.csv" 'Me.Variables.FullFilePath
objFileInfo = New FileInfo(strFilePath)
objStreamReader = New StreamReader(strFilePath)
Do Until objStreamReader.EndOfStream
strFileContent = objStreamReader.ReadLine
Process_data(strFileContent) ' do the work in this a sub!
Loop
Catch ex As Exception
MessageBox.Show(ex.Message.ToString(), "Error", MessageBoxButtons.OK)
End Try
End Sub注意:我使用foreach循环来获得脚本中的文件名。这里的硬编码文件路径就是一个例子。
https://stackoverflow.com/questions/44200547
复制相似问题