0

非正規化された Access DB を取得し、EF 4 に基づいて SQL の正規化されたテーブルに移動しています。

Access DBに次のものがあるとしましょう

-------------------
|  NAME  | FRUIT  |
-------------------
| John   | Apple  |
| Jane   | Apple  |
| Mark   | Orange |
| Nancy  | Orange |
| Jim    | Apple  |
-------------------

SQLで次の2つのデータベースを作成しています

tblNames:

-------------------------------
|   ID   |  Name  |  FruitID  |
-------------------------------
|    1   |  John  |     1     |
|    2   |  Jane  |     1     |
|    3   |  Mark  |     2     |
|    4   |  Nancy |     2     |
|    5   |  Jim   |     1     |
-------------------------------

tblFruits:

--------------------
|   ID   |  Fruit  |
--------------------
|    1   |  Apple  |
|    2   |  Orange |
--------------------

私のデータフローでは、派生列を使用して名前を取得できます (テーブルは実際には大きく、いくつかのデータ型変換を行っています)。ただし、派生列から出力を取得し、各行を果物テーブルの適切な ID と照合して、tblNames データベースに挿入する必要がある正しい出力を生成するにはどうすればよいですか?

4

1 に答える 1

2

データフローが tblNames を設定する前に tblFruits が既に設定されていると仮定すると、ルックアップ変換をシーケンスに追加して、特定の Fruit の正しい tblFruits.ID を取得できるようにする必要があります。

使用している SSIS のバージョンは指定しませんが、ターゲット テーブルで常に一致するものを見つけることを想定していることに注意してください。2005 年には、一致するものが見つからないことは、テーブルが存在しないか権限がないことと同じエラーであったため、苦痛でした。2008+ では、ターゲット テーブルで一致が見つからなかった行を特定できます。

ルックアップを使用する際に心に留めておくべき最も重要なことは、必要な列だけを引き戻す必要があるということです。テーブル セレクターは便利ですが、怠惰にクリックしないでください。必要以上のリソースを消費し、「SSIS は非常に遅く、がらくたの一部である」ということしかわかりません。

その他の有用で求められないアドバイスは、派生列であまり多くの操作を行わないことです。代わりに、焦点が絞られた複数の派生列を使用してください。直感に反するように聞こえるかもしれませんが、SSIS エンジンは操作をより適切に並列化できます。

EF タグがどのように適用されるかはわかりませんが、問題のニュアンスが欠けている可能性があります。

于 2012-09-28T15:50:13.193 に答える