2017-05-26 19 views
2

私は厄介なフラットファイル入力を持っています。これはコンマで区切られたファイルですが、テーブルの種類によって "[{"と "}]"または "{"と "}"で区切られた組み込みテーブルがあります。 SSISカンマ区切りのフラットファイルを使用することはできません。組み込みテーブルのないレコードがあるかもしれないからです。 これを回避するには、フラットファイルの入力を右に不揃いに設定し、1つの列に8,000文字を設定しました。スクリプトのコンポーネントによるssis unicodeフラットファイル処理

私はスクリプトコンポーネントで文字列分割を行い、テーブルデータを別々の出力ストリームに出力しました。

しかし、私は今8000文字を超えるファイルを受信して​​いますが、これはプロセスが壊れています。

フラットファイルを "1252(ANSI Latin 1)"からNTEXTの列でユニコードに変換しようとしました。

私は私が得る文字列を見たとき、私はその後、漢字タイプ文字の多くなしラインフィードを取得するように見える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でfilesystemオブジェクトを広範囲に使用しましたが、VB.netでこれを試みたことはありません。その間に私は自分自身で解決策を見つけることができるかどうかを確認するためにGoogleを辿りつけるだろう – MiguelH

+0

私は手を離した特定のガイドを知らない。あなたが選んだ言語で 'FileSystemObject Tutorial'のためのグーグルリングは、そのトリックを行うべきです。ところで、VBAとVB.netのFSOの使い方にはほとんど違いがないので、ほとんど問題はありません。 –

2

SSIS vb.netスクリプトコンポーネントのソース変換でファイルシステムオブジェクトを使用するのと正確に一致するものを見つけるのが難しいことが分かったので、私は自分の発見を分かち合うと思いました!

以下の輸入が

Imports System.IO 
Imports System.Text 

とコードを必要としている。..

注:私は私のスクリプトでファイル名を取得するforeachループを使用します。ハードコーディングされたファイルパスはここでの例です。

関連する問題