ssis unicode flatfile processing by script component
我有一个笨拙的平面文件输入,几乎可以是任何长度。这是一个逗号分隔的文件,但有由"["和"]"或""和""分隔的嵌入表。取决于表格类型。我不能使用现成的ssis逗号分隔的平面文件,因为可能存在根本没有嵌入表的记录。为了解决这个问题,我已经将平面文件输入设置为不规则的右侧,并有一列8000个字符。
然后,我在脚本组件中完成了字符串拆分,并将表数据输出到单独的输出流。
但是,我现在收到的文件超过8000个字符,这打破了我的进程。
我尝试将平面文件从"1252(ansi-latin 1)"转换为带有ntext列的Unicode。
然后我插入了以下代码来将其转换为字符串见http://www.bimonkey.com/2010/09/convert-text-stream-to-string/
1 2 3 4 5 6 7 | 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) |
但是当我看到字符串时,我会看到很多汉字类型的字符,没有换行符。
有什么我可以试试的吗?
当我发现很难找到与在ssis vb.net脚本组件源代码转换中使用filesystem对象完全匹配的地方时,我想我会分享我的发现!
需要下列导入
1 2 | Imports System.IO Imports System.Text |
还有密码…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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循环在脚本中获取文件名。这里的硬编码文件路径就是一个例子。
您不必使用平面文件源,而只需使用脚本源组件,该组件用文件系统对象打开文件。