重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

MS SQL Server自体が初心者なので、初歩的な質問だと思いますが、
Enterprise Managerを使って、Aというデータベースの「tbl」というテーブルの内容を、「tbl_new」というテーブルに全てコピーするには、どうすればよいのでしょうか?フィールドの内容は同一です。

ちなみに、両方のテーブルにいくつかデータが存在していて、「tbl」が正しいデータになっています。
同じキーがあれば更新して、キーがなければ追加したいのです。

一度テーブルを消して、コピーするなどの方法が依存関係の都合でできないので、データだけ移したいと思っています。

Enterprise Managerのどの機能を使えばよいのかもわからない状態ですが、よろしくお願いします。

A 回答 (2件)

新しいクエリを使って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
です。

この回答への補足

> 新しいクエリを使ってSQL文を組み立てて下さい。

Enterprise Managerにそのような機能があるということでしょうか。
その機能の使用方法がわかれば、提示して頂いたSQL文でいけるのでしょうか。

ちょっと気になったのですが、

> delete from tbl_new where not exists(select ' '

の「' '」ってなにをセレクトしているのでしょうか?

補足日時:2013/03/26 15:12
    • good
    • 0

> 同じキーがあれば更新して、キーがなければ追加したいのです。


キー以外の列すべてを更新するという前提です。

1)状況の把握。「tbl」の件数、「tbl_new」の件数、「tbl」と「tbl_new」のキーが一致する件数
1)データのバックアップ。DTS使うなり、ACCESSでリンクテーブル張ってインポートするなり。
3)「tbl_new」のレコードのうち、キーが「tbl」にあるものをdelete
4)「tbl」にあるものすべてを「tbl_new」へinsert
5)結果を検証

でしょうね。

この回答への補足

解凍ありがとうございます。
件数は共に数万件あります。バックアップはデータベース全体をバックアップしています。
3が難しいですね。やり方がいまいち・・・
3が出来れば4は出来るのでしょうけれども、なんともはや・・・
ありがとうございます。

補足日時:2013/03/26 15:10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す