Fooというデータベースとbarというデータベースがあります。私はfooにtblFoobarという名前のテーブルを持っていて、それをデータベースfooからデータベースバーに移動させたいのです。これを行うためのSQLステートメントは何ですか?
SQL Serverの場合と同じデータベースサーバー上? 3部構成の命名を使用してください。
INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar
これはデータを移動するだけです。テーブル定義(およびパーミッションやインデックスなどの他の属性)を移動したい場合は、他に何かする必要があります。
SQL Server Management Studioの[データのインポート]タスク(DB名を右クリックしてからタスク)を使用すると、この作業のほとんどが自動的に行われます。データをコピーしたいデータベースから実行します。
テーブルが存在しない場合は作成されますが、おそらくインデックスなどを再作成する必要があります。テーブルが存在する場合、デフォルトで新しいデータが追加されますが、それを調整して(マッピングの編集)、既存のデータをすべて削除することができます。
私はこれをいつも使っています、そしてそれはかなりうまくいきます。
これはうまくいくはずです。
SELECT *
INTO DestinationDB..MyDestinationTable
FROM SourceDB..MySourceTable
それはnotコピーconstaints、デフォルトまたはインデックス。作成されたテーブルはnotクラスタ化インデックスを持ちません)。
代わりにあなたができる:
INSERT INTO DestinationDB..MyDestinationTable
SELECT * FROM SourceDB..MySourceTable
宛先表が存在し、それが空の場合。
それが1つのテーブルだけであれば、あなたがする必要があるのはそれだけです。
考慮しなければならないことの1つは、将来他のオブジェクトを移行するなどの他の更新です。ソーステーブルとターゲットテーブルは同じ名前ではありません。つまり、ビュー、ストアドプロシージャなどのオブジェクトに依存している場合も、変更を加える必要があります。
あなたがどんな問題もなしに手動で行くことができる1つまたは複数のオブジェクトを聖霊降臨祭。しかし、ほんの数回の更新よりも多い場合は、サードパーティの比較ツールが非常に便利です。現時点では、スキーマの移行に ApexSQL Diff を使用していますが、他のツールに問題があるとは限りません。
Management Studioでcreate table
をスクリプト化し、そのスクリプトをバーで実行してテーブルを作成します。 (オブジェクトエクスプローラでテーブルを右クリック、スクリプトテーブルとして、作成...)
INSERT bar.[schema].table SELECT * FROM foo.[schema].table
また、SQL SERVERスクリプトの生成WIZARDを使用して、次のことを実行できるSQLスクリプトの作成をガイドすることもできます。
ここ のスクリーンショットが表示されたSQL Server 2008のワークフロー例。
この方法で行くことができます:(一般的な例)
insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB)
Select columnA, columnB from DeveloperDB.dbo.Customers
また、insert節に入れるために列名も生成する必要がある場合は、次のようにします。
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName')
結果をコピーしてクエリウィンドウに貼り付け、テーブルの列名を表します。これを指定しても、ID列も除外されます。
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName') and is_identity = 0
データベースが同じ場所にある場合は、行をコピーするスクリプトが機能することを忘れないでください。
あなたはこれを試すことができます。
select * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>
両方のDBが同じサーバーにある場合、サーバー名はオプションです。
既存のテーブルがあり、データだけをコピーしたい場合は、このクエリを試すことができます。
destination_Existing_Tblに挿入します。col1、col2を選択します。
データコピー
INSERT INTO Alfestonline..url_details(url,[status],recycle)
SELECT url,status,recycle FROM AlfestonlineOld..url_details