2017-01-02 24 views
0

フラットファイルからデータをロードしようとしています。このファイルのサイズは約2.5 GBで、行数は10億に近いです。 DFT内でフラットファイルソースを使用しています。ファイル内のいくつかの行は列パターンに従いません。たとえば、1つの列の値として余分な区切り記号やテキスト修飾子があります。私はそれらの行をスキップし、正しいフォーマットを持つ残りの行をロードしたいと思います。私はSSIS 2014を使用しています。DFT内のフラットファイルソースは失敗しています。 alwaysCheckforrowdelimiterプロパティをfalseに設定しましたが、それでも動作しません。ファイルが大きすぎるので手動で開閉することはできません。親切に助けてください。ssisのフラットファイルからエラー行をスキップ

+0

これは1がオフになっている場合は、私はあなたがファイルを検索し、事前にそれをきれいにするスクリプト(VBScriptの、PowerShellを、何でも)使用することを提案します。 –

+0

十億行に及ぶファイルのためのスクリプトはありがたいですが、時間がかかります。これは毎日予定されている仕事の一部であり、一定の時間内に完了する必要があります。 –

+0

それは時間がかかるでしょうか? 10億行の場合、多分おそらく最大30分かかりますか?区切り文字が多すぎると認識できない場合があります.1つ左のフィールドをシャッフルするだけの場合があります。とにかくそれを考慮したいかもしれません。 –

答えて

0

私はNick.McDermaidと同じアイデアを持っていますが、もう少しお手伝いできます。 ファイルを正規表現で消去することができます。 (スクリプトの中で)

あなたが望む区切り文字の数と行を一致させる正規表現を定義する必要があります。他の行は削除する必要があります。

^[A-Z]*;[A-Z]*;[A-Z]*;[A-Z]*$ 

とデータサンプル:

AA;BB;CC;DD 
AA;BB;CC;DD 
AA;BB;CC;DD;EE 
AA;BB;CC;DD 
AA;BB;CC 
AA;BB;CC;DD 
AA;BB;CC;DD 

あなたがここに

はここでメモ帳++

Notepad++ Example screenshot

で実行視覚的な例私の例に使用するパターンですオンラインで試すことができます:https://regex101.com/r/PIYIcY/1

よろしく、 アルノー

関連する問題