2012-01-16 2 views
1

私はSSISの完全な初心者です。データベースにインポートする前に列を検証する方法

私はc#/ sqlサーバーのバックグラウンドを持っています。

データベースに入る前にデータを検証することが可能かどうかを知りたいと思います。 |(パイプ)で区切られたテキストファイルからテキストを取得しています。

例えば、特定のデータポイントがnullある場合、0に変更したり、特定のデータポイントの長さが0であれば、次に"nada"に変わり。

SSISでもこれが可能かどうかは分かりませんが、正しい方向に向けることができれば助けになります。

答えて

5

何でも可能です!

フラットファイルデータソースの後に、派生列変換を使用します。次のような式で新しい列を導き出します。

ISNULL(ColumnName)? "nada":ColumnName

次に、この新しい列をデータソースの宛先に使用します。

希望します。

+0

どのように私はC#コードをssisに挿入できますか? –

+1

ツールボックスの[スクリプトタスク]を使用します。コレクションの各行に対してスクリプトを作成する場合は、「Foreach ADO Enumerator」を使用し、変数として値を「スクリプトタスク」に渡します。次に、 "Dts.Variables [" variableName "]。Value"を使用して、メインメソッドの変数にアクセスできます。 – Christo

+1

FYI - 上記の私の元々の答えは、SSISの式構文であるC#のコードではありません。詳細については、このリンクを参照してください。 http://msdn.microsoft.com/en-us/library/ms140206.aspx – Christo

1

あなたはSSISを使用しての死者セットしている場合、私は知らないが、私は一般的にデータベースにテキストファイルのデータをインポートするために使用されてきた基本的な方法は、一般的に、2つのステージをとります。

  1. 使用BULK INSERT負荷にファイルをデータベースサーバ上の一時ステージングテーブルに格納するステップと、このステージングテーブルの各列は、varchar(max)のように、そのステージングテーブルに含まれている各データにかなりの耐性があります。
  2. テンポラリテーブル内のデータを更新し、必要に応じて正しい形式になっていることを確認し、列を最終形式に変換して行をデスティネーションテーブルにプッシュする検証ルーチンを作成します。

私はこの方法が大好きです。BULK INSERTは、吐き出されたエラーについて少し謎かもしれません。一時的なステージングテーブルを使用すると、テキストファイルをルーティングするのではなく、データセットを調べてエラーを即座に修正する方がはるかに簡単です。

関連する問題