1
  • あるデータ ソースを調べて、新しいレコードを別のデータ ソースにコピーするインポート システムを作成したいと考えています。
  • 毎月、あるデータソースから別のデータソースにいくつかのテーブルデータをコピーしたい

SourceTableName : srcTable
DestinationTableName :destTable

私が持っているソーステーブルの最初の月を考えてみましょう:

Id 名前
1 ジョン
3 ラフル
5 アンドリュー

3行すべてがコピーされますdesTable

私が持っているソーステーブルの2番目の月を想定してください

Id 名前
1 John
3 Rahul
5 Andrew
6 Vikas
7 Sonam
8 Divya

最初にSqlは最後の行を取得し、desTable
その行に一致させsrcTable
、すべての新しいレコードを抽出しscrTableてコピーする必要がありますdesTable

.....

上記の目的を満たすためのクエリの書き方を教えてください。より短いアプローチがあれば、それも役に立ちます。

4

2 に答える 2

0

新しいレコードの追加のみに関心があり、更新や削除を処理する必要がないため...宛先テーブルに存在しない場合は、ソース テーブルからレコードを追加するだけです。

INSERT INTO destTable (ID, Name)
SELECT s.ID, s.Name
FROM 
    srcTable s 
    LEFT OUTER JOIN destTable d ON d.ID = s.ID
WHERE
    d.ID IS NULL
于 2013-01-04T19:13:39.883 に答える
0

このアクションを実行するためのストアド プロシージャを作成し、必要なときにいつでも実行できます。このアクションでは、以下のクエリから実行できます: (パート 1 は新しいデータの挿入、パート 2 は変更データの更新)

Insert Into DestinationTable(ID, Name)
Select  ID, Name
    From    SoiurceTable
    Where   Not Exists
            (Select *
                From    TDestinationTablest
                Where   DestinationTable.ID =   SoiurceTable.ID)
Go
Update  DestinationTable
    Set DestinationTable.Name  =    SoiurceTable.Name
    From    DestinationTable, SoiurceTable
        Where   DestinationTable.ID     =   SoiurceTable.ID

お役に立てば幸いです。

于 2013-01-04T19:34:15.810 に答える