5

ステージング テーブルを使用して検証を実行し、ライブに挿入しています。

テーブルPERSONSがあるとします

TABLE Persons
(
Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
HouseNumber int,
)

および次のようなSTAGING TABLE

TABLE Persons_Staging
(
Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
HouseNumber varchar(255),
)

重複が挿入されないようにしながら、ステージング テーブルからライブ テーブルにデータを転送する手順を記述する必要があります。どうすればそれを達成できますか?

前もって感謝します

4

2 に答える 2

9

コマンドを使用しMERGEます。

このようなもの:

MERGE 
    INTO Persons AS TARGET
    USING Persons_Staging AS SOURCE
    ON TARGET.ID = SOURCE.ID
    --WHEN MATCHED
    --    THEN UPDATE???
    WHEN NOT MATCHED BY TARGET
        THEN INSERT (Id , LastName , FirstName, HouseNumber)
    VALUES (SOURCE.Id , SOURCE.LastName , SOURCE.FirstName, SOURCE.HouseNumber)
    -- WHEN NOT MATCHED BY SOURCE
    --    THEN DELETE???
;

既存のレコードを更新する場合は、UPDATEパーツのコメントを解除し、適切な更新句を追加します。削除部分も同様です。

于 2012-11-16T10:30:46.673 に答える
0

これを両方のテーブルの左外部結合で使用して、同じではないすべてのデータを取得できます。その後、そのデータを列に挿入できます

INSERT INTO Tab1(front,end,number)
SELECT first,last,nr from tab2 LEFT OUTER JOIN tab1 ON front = first AND last = end AND convert(int,number) = CONVERT(int,nr)
WHERE tab1.ID is null

これは機能する可能性がありますが、この種のもの用に作成されたツールがあります

于 2012-11-16T13:22:09.520 に答える