データベースDBにテーブルABCがあります。同じDBにABC_1、ABC_2、ABC_3という名前のABCのコピーを作成したい。 Management Studio(できれば)またはSQLクエリのいずれかを使用してこれを行うにはどうすればよいですか?
これは、SQL Server 2008 R2用です。
SELECT ... INTO
を使用:
SELECT *
INTO ABC_1
FROM ABC;
これにより、ABC
と同じ列構造を持ち、同じデータを含む新しいテーブルABC_1
が作成されます。ただし、制約(キー、デフォルト値など)はコピーされません。
毎回異なるテーブル名でこのクエリを複数回実行できます。
データをコピーする必要がなく、同じ列構造を持つ新しい空のテーブルを作成する場合にのみ、偽の式でWHERE
句を追加します。
SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;
SSMSで、データベースをObject Explorerに展開し、Tablesに移動して、目的のテーブルを右クリックしてScript Table Asを選択します。 作成先、新しいクエリエディターウィンドウ。テーブル名を変更するには、検索と置換(CTRL + H)を実行します(つまり、検索対象)にABC
を入力しますフィールドとReplace WithのABC_1
をクリックしてからOK)をクリックします。
SQLでこれを行う方法を示す他の回答もうまくいきますが、この方法との違いは、インデックス、制約、トリガーも取得できることです。
データを含める場合は、このテーブルを作成した後、以下のスクリプトを実行してABCからすべてのデータをコピーします(IDフィールドがある場合は同じID値を保持します)。
set identity_insert ABC_1 on
insert into ABC_1 (column1, column2) select column1, column2 from ABC
set identity_insert ABC_1 off
すべての制約とキーを使用してテーブルを複製する場合は、次の手順に従います。
次に、データをコピーするには、次のスクリプトを実行します。
SET IDENTITY_INSERT DuplicateTable ON
INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... )
SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable
SET IDENTITY_INSERT DuplicateTable OFF
第一オプション
select *
into ABC_1
from ABC;
2番目のオプション:SSISを使用します。つまり、オブジェクトエクスプローラーでデータベースを右クリック>すべてのタスク>データをエクスポート
これは別のオプションです。
select top 0 * into <new_table> from <original_table>
sQL Server Management Studioまたはnetcatを使用すると、SQLの操作が簡単になります。
テーブルとそのデータ、制約、トリガーをコピーするには、SSISを記述する必要があります。組織には、kalrom SystemsのKal Adminというソフトウェアがあり、ダウンロード用の無料バージョンがあります(テーブルのコピー機能はオプションだと思います)