关于sql server:脚本组件的ssis unicode flatfile处理

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循环在脚本中获取文件名。这里的硬编码文件路径就是一个例子。


您不必使用平面文件源,而只需使用脚本源组件,该组件用文件系统对象打开文件。