4

2つのSQLServerデータベースがあり、データベースAからデータベースBにデータを移行するためのスクリプトを作成する必要があります。両方のデータベースのスキーマは同じです。

テーブルをループする必要があり、テーブルごとに次のルールに従う必要があります。

  1. 移行するアイテムがターゲットテーブルに存在しない場合(たとえば、列で比較が行われる場合Name)、それを直接挿入します。
  2. 移行するアイテムがターゲットテーブルに存在する場合、特定の列のみを更新する必要があります(たとえば、更新するだけで、AgeAddressの列には触れないでください)

誰かがそのスクリプトを手伝ってくれますか?どんな例でも十分でしょう。どうもありがとう

編集:

1つのテーブルの例が必要です。ループする必要はありません。各テーブルを個別に処理できます(各テーブルには独自の比較列と更新列があるため)

4

2 に答える 2

8

MERGEステートメントは、ここで役立つように見えます。例:

MERGE StudentTotalMarks AS stm
USING (SELECT StudentID,StudentName FROM StudentDetails) AS sd
ON stm.StudentID = sd.StudentID
WHEN MATCHED AND stm.StudentMarks > 250 THEN DELETE
WHEN MATCHED THEN UPDATE SET stm.StudentMarks = stm.StudentMarks + 25
WHEN NOT MATCHED THEN
INSERT(StudentID,StudentMarks)
VALUES(sd.StudentID,25);

マージステートメントはSQLServer2008の時点で利用可能であるため、幸運です

于 2012-05-24T12:36:04.037 に答える
0

スクリプトを作成する代わりに、別の名前でソーステーブルをターゲットサーバーにコピーしてみませんか(更新を行う必要があります)。

次に、名前が存在しない場所に単純な挿入を実行します。

これがステップ1のSQLのみです。

INSERT INTO [TableA]
SELECT Name,
       XX,
       XXXX
FROM   TableB
WHERE  NOT NAME IN(SELECT NAME
                   FROM   TableA) 
于 2012-05-24T12:39:50.437 に答える