- 締切済み
SQL Server 2000でテーブル内容を同一
MS SQL Server自体が初心者なので、初歩的な質問だと思いますが、 Enterprise Managerを使って、Aというデータベースの「tbl」というテーブルの内容を、「tbl_new」というテーブルに全てコピーするには、どうすればよいのでしょうか?フィールドの内容は同一です。 ちなみに、両方のテーブルにいくつかデータが存在していて、「tbl」が正しいデータになっています。 同じキーがあれば更新して、キーがなければ追加したいのです。 一度テーブルを消して、コピーするなどの方法が依存関係の都合でできないので、データだけ移したいと思っています。 Enterprise Managerのどの機能を使えばよいのかもわからない状態ですが、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 原沢 信道(@nharasawa)
- ベストアンサー率53% (90/168)
新しいクエリを使ってSQL文を組み立てて下さい。下記はキーが2項目データーが2項目の場合の例です。 delete from tbl_new where not exists(select ' ' from tbl where tbl_new.キー1=tbl.キー1 and tbl_new.キー2=tbl.キー2) go update tbl_new set データ1=tbl.データ1,データ2=tbl.データ2 from tbl_new,tbl where tbl_new.キー1=tbl.キー1 and tbl_new.キー2=tbl.キー2 go insert tbl_new select * from tbl where not exists(select ' ' from tbl_new where tbl_new.キー1=tbl.キー1 and tbl_new.キー2=tbl.キー2) go です。
- bin-chan
- ベストアンサー率33% (1403/4213)
> 同じキーがあれば更新して、キーがなければ追加したいのです。 キー以外の列すべてを更新するという前提です。 1)状況の把握。「tbl」の件数、「tbl_new」の件数、「tbl」と「tbl_new」のキーが一致する件数 1)データのバックアップ。DTS使うなり、ACCESSでリンクテーブル張ってインポートするなり。 3)「tbl_new」のレコードのうち、キーが「tbl」にあるものをdelete 4)「tbl」にあるものすべてを「tbl_new」へinsert 5)結果を検証 でしょうね。
補足
解凍ありがとうございます。 件数は共に数万件あります。バックアップはデータベース全体をバックアップしています。 3が難しいですね。やり方がいまいち・・・ 3が出来れば4は出来るのでしょうけれども、なんともはや・・・ ありがとうございます。
補足
> 新しいクエリを使ってSQL文を組み立てて下さい。 Enterprise Managerにそのような機能があるということでしょうか。 その機能の使用方法がわかれば、提示して頂いたSQL文でいけるのでしょうか。 ちょっと気になったのですが、 > delete from tbl_new where not exists(select ' ' の「' '」ってなにをセレクトしているのでしょうか?