2

毎日、いくつかの csv データをテーブルにロードします。そして、私のテーブルには日付列があります。ロールバック関数を使用する必要があります。データがテーブルに既に存在する場合はロールバックする必要があり、それ以外の場合は Asofdate パラメータに基づいて挿入する必要があります。

少し紛らわしいと思いますが、もっと明確にさせてください。

私のテーブルには eid、ename、asofdate 列があります。毎日新しいファイルを挿入すると、そのファイルが asofdate に基づいてそのテーブルに既に存在するかどうかを確認する必要があります。データが存在する場合は、データをロールバックする必要があります。

4

3 に答える 3

10

@Diego が述べたようにLookup transformation、データ フロー タスク内で a を使用して機能を実現します。

データ フロー タスクは次のようになります。ここでは、フラット ファイル ソースが CSV ファイルを読み取り、そのデータをルックアップ変換に渡します。この変換は、変換先テーブルの既存のデータをチェックします (テーブル名がdbo.Destinationであるとします)。ルックアップ変換の構成は、次のスクリーンショットに示されています。一致するレコードがない場合、CSV ファイルからのデータが OLE DB 宛先に送信されます。それ以外の場合、データは破棄されます。

データ フロー タスク

Lookup transformation[接続] タブで、宛先データベース テーブルを選択します。[列] セクションで、既存のデータを確認するすべての列を確認します。この場合、CSV ファイルからの列eidname、およびasofdateは、データベース テーブル dbo.Destination 内の同じ名前の列に対して検証されます。これら 3 つの列の入力値がテーブル内の行と一致する場合、データはそれ以上ストリームに送信されません。

それがあなたにアイデアを与えることを願っています。

ルックアップ テーブルの構成

ルックアップチェック

于 2012-04-25T10:38:02.993 に答える
2

正しい用語はロールバックではありません。ロールバックとは、何かを挿入してトランザクションを元に戻すことです。データが既に存在する場合は、データを挿入しないでください。

必要なのは、DBSource と DBDestination の間のルックアップ変換です。このルックアップは、宛先テーブルにデータが存在するかどうかを確認し、存在しない場合は挿入する必要があります

于 2012-04-25T10:18:08.320 に答える
0

この種の要件については、テーブルでInsert TRIGGERを使用でき ます。データを挿入するときに、すべてのレコードをチェックする場合は、データがテーブルに存在するかどうかを確認できます。

また

テーブルにファイルを挿入する前に、if existsステートメントを使用できます。これは、レコードが存在するかどうかを確認したい場合、またはこの SQL が気に入らない場合です。If Exists Update Else Insert

于 2012-04-25T10:17:22.533 に答える