2011-01-26 5 views
0

フラットファイルからSQL Server 2008テーブルにデータを取り込んでいます。それは私がマッチングを行うために必要なアドレス情報を含んでいるので、データをいくつか整理する必要があります。SQL Server 2008で受信した文字列フィールドを効率的にクリーンアップする方法はありますか?

私は共通の略語/用語と公式の米国郵便局の対応するテーブルを作成し、アドレス文字列を受け入れ、置換とabbreviationsテーブルのデータを使ってきれいにされたアドレス文字列を返す関数を作成しました。

インポート後にテーブル上でUPDATEを実行し、アドレスフィールドにSETを実行すると、関数から返された文字列が有効になりますが遅くなります。私はかなり新しいSQLですが、これを行う良い方法はありますか?おそらくSSISのインポート中に挿入される前ですか?

+0

正式な情報源からのデータが入力されたときにそのデータを検証することを検討しましたか?既存のデータについては、インポート前にクリーニング(または "スクラブ")サービスでアドレスリストを実行するだけです。 それ? – Matt

答えて

2

ルックアップとして実行するか、ステージングテーブルにデータを格納してから、実行SQLタスクを使用してステージングテーブルをクリーンアップしてから、データフローを使用してテーブルにインポートします。私はいくつかの理由からこの方法でやりたいと思っています。まず最初に、2つのテーブルへの最初のデータフロー、1つはクリーンアップ、もう1つはファイルがデータを保持していたものです。このようにして、私は照会できるデータの編集されていないバージョン、照会できるデータの編集バージョン、および実表のデータを持っています。これは、データインポートの問題を調査するのに役立ちます。データが格納されているために何か問題が発生したかどうかを簡単に確認することができます(pk/fk違反または例外テーブルへの移動が必要なものもありますすべてのレコードをインポートすることができない場合は例外テーブルへのすべてのレコード)さらに複雑なタイムコンシューマープロセスを頻繁に実行しないバグがある場合は、クリーンアッププロセスを修正できます(ライブテーブルには修正が完了したら、SSISパッケージ全体ではなく、ストアドプロシージャの新しいバージョンを配備するだけです。これは、データインポートを再構築しサポートするための最良のモデルです

1

この場合、SSISパッケージでは、共通用語テーブルの参照を行い、アドレスに参加し、クリーンアドレスを出力して宛先テーブルに渡すことができます。これにより、ロード後にUpdateステップが省略されます。

+0

私はLookup変換を試していません、私のアドレスフィールドは "1234 North Elm Street"のような完全なアドレスです、私の用語テーブルは| North | N |と|ストリート|セント|。ルックアップはデータの性質を考慮して使用できますか? – DKnight

関連する問題