2017-05-26 79 views
2

我有一個尷尬的平面文件輸入,幾乎可以是任何長度。這是一個以逗號分隔的文件,但嵌入的表格由「[{」和「}]」或「{」和「}」分隔,具體取決於表格類型。我不能使用現成的SSIS逗號分隔的平面文件,因爲可能有沒有嵌入表格的記錄。 爲了解決這個問題,我將平面文件輸入設置爲不正確,並且有一列8000個字符。ssis unicode flatfile腳本組件處理

我已經在腳本組件中完成了字符串分割並輸出表數據來分離輸出流。

但是,我現在正在接收超過8000個字符的文件,這已破壞我的進程。

我試過將平面文件從「1252(ANSI拉丁1)」轉換爲與NTEXT中的列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) 

但是,當我看串我得到似乎得到了很多的漢字字符類型,並沒有換行符。

任何想法,我可以嘗試下?

+0

通常這樣的文件在表列中使用不同的分隔符。如果是這樣,請將列視爲字符串,並使用split將其解析爲數組。並將該數據連同源表的鍵一起發送到不同的輸出數據流。 – KeithL

+0

@keithL我沒有問題分裂數據。當它是8,000個以上的字符時,我無法閱讀 – MiguelH

回答

0

而不是使用平面文件源,您可以使用腳本源組件打開帶有文件系統對象的文件。

+0

@taballernan你能指點我一個有用的指導嗎?我在VBA中廣泛使用了filesystemobject,但從未在VB.net中嘗試過。與此同時,我將繼續拖網谷歌,看看我是否可以自己找到解決方案 – MiguelH

+0

我不知道任何特定的指南。用你選擇的語言在'FileSystemObject Tutorial'上搜索應用程序就可以了。順便說一下,你在VBA和VB.net中使用FSO的方式幾乎沒有什麼區別,所以你應該沒有什麼問題。 –

2

因爲我發現在SSIS vb.net腳本組件源代碼轉換中很難找到完全匹配的文件系統對象,所以我想我會分享我的發現!

以下進口需要

Imports System.IO 
Imports System.Text 

和代碼..

注:我使用foreach循環來獲得我的腳本文件名。這裏的硬編碼文件路徑就是一個例子。