2010-11-23 10 views
0

SSISパッケージ中に600万行にピボットされた.csvファイルがあります。 SQL Server 2005に2500万行以上のテーブルがあります。 .csvファイルには、テーブル内のデータを複製するデータがあります。既存の行が更新される可能性がありますか、これを効率的に達成するための最良の方法は何ですか?SSIS Insertなどで上書きすることはできますか?

答えて

5

6mの行と25mの行を比較することは、検索やSQLコマンドのデータフローコンポーネントがアップシーケンスを実行するために各行に対して呼び出されて効率的になることはありません。このような場合、ステージング・テーブルにそれらを迅速にロードし、アップセットを実行するために単一のセットベースのSQLコマンドを使用するのが最も効率的な場合があります。

ルックアップを行う場合でも、フローを2つのストリームに分割します.1つは挿入し、もう1つはステージングテーブルに挿入して更新操作を行います。

+0

Lookupタスクは、この数の行では遅くなる可能性があります。ステージングとSQLは良い選択です。 – grapefruitmoon

+0

+1 - 私は毎日これを行います。ステージングテーブルに挿入し、ステージングからロードするために 'EXISTS'を使用して比較を実行します。 – JNK

2

古いデータが失われても構わない場合(つまり、最新のファイルはすべてテーブルの内容ではなく重要です)、テーブルのすべてのレコードを消去して再度挿入することができます。

また、一時テーブルにロードして、更新する必要があるものとそこから挿入する必要があるものを判断することもできます。

1

参照タスクを使用して、CSVとテーブルの一致する行を識別し、この出力を別のテーブルまたはデータフローに渡し、SQLタスクを使用して必要な更新を実行できます。

関連する問題