2011-09-15 5 views
0

可能性の重複:ここ
update one table with data from another別のデータベースの別のテーブルのデータで1つのテーブルを更新するにはどうすればよいですか?

エクストリームのSQLのnoob。私は2つのデータベース(Database1、Database2)を持っています。各dbには同じテーブルがあります。私は、Database1のTableAのデータ(Database1、TableA - > Database2、TableA)でDatabase2のTableAを更新したいと考えています。

これを行うにはどうすればよいですか?

+2

どのRDBMSを使用していますか(MS SQL、Oracle、MySQL)?宛先テーブルをソーステーブルで完全に上書きしますか?新しい行を追加するだけですか? –

+0

これはMS SQLにあります。基本的には、宛先テーブルにはソーステーブルと同じデータの多くが含まれていますが、ソーステーブルは既存の行に異なる値を持つか、新しい行を持つ可能性があります。私は宛先テーブルがソーステーブルと一致するようにしたいので、宛先テーブルに存在しない場合は新しい行を挿入し、既存の行も更新する必要があります。 – Keith

+0

2つのテーブルを同期させる頻度はどれくらいですか?あなたは毎日リアルタイムで何かを探していますか? – Swoop

答えて

2

このように、dboスキーマを使用すると仮定します。

insert into Database2.dbo.TableA (column1, column2, etc) 
select column1, column2, etc 
from Database1.dbo.TableA 

着信データが古いか、アイデンティティのフィールドを使用しているを上書きする必要がある場合は、truncate Database2.dbo.TableA最初にしたいことがあります。

IDがテーブル全体で同じになる必要がある場合は、スクリプトを実行する前にIDプロパティを無効にしてからDatabase2.dbo.Tableにしてから再度有効にする必要があります。

1

これをワンタイムデータ同期として実行している場合、特定のデータベースを右クリックすると、SQL Serverは[タスク]オプションの下にある[データのインポート/エクスポート]を提供します。データソースと宛先として使用するSQL Server /データベース/テーブルを選択し、ジョブを実行することができます。これを設定すると、宛先テーブルをクリアし、ソースからすべてのデータを挿入するオプションを設定する機会があります。

このタイプのトランザクションは、スケジュールされた時間に実行されるようにスケジューリングすることもできますが、この分野ではこれまで多大な努力を払っていません。

+0

インポート/エクスポート方法を試みましたが、コピー処理で失敗しました。このエラーメッセージは非常にわかりにくく、あまり有用ではありませんでした。これをスクリプト化する方法はありますか?私も上記のジャスティンのソリューションを試しましたが、キーを複製するために挿入するのに失敗しました。私はちょうど新しい行/キーを挿入し、それらが異なる場合は既存のものを更新したい。 – Keith

+0

エラーメッセージを投稿できますか?最初に目的地のテーブルからすべてのレコードをクリアすると、ジャスティンのアプローチを使用することができます。重複するキーを避ける必要があります。あなたのレコードをクリアするために、私はより効率的に働くtruncate tableを使用しました。 – Swoop

+0

ありがとうございます。私は "切り捨て"を試み、ジャスティンのアプローチを実行しようとします。 – Keith

関連する問題