web-dev-qa-db-ja.com

SQL Server-データベーステーブルのコピーを作成し、同じデータベースに配置しますか?

データベースDBにテーブルABCがあります。同じDBにABC_1、ABC_2、ABC_3という名前のABCのコピーを作成したい。 Management Studio(できれば)またはSQLクエリのいずれかを使用してこれを行うにはどうすればよいですか?

これは、SQL Server 2008 R2用です。

81
sequel.learner

SELECT ... INTOを使用:

SELECT *
INTO ABC_1
FROM ABC;

これにより、ABCと同じ列構造を持ち、同じデータを含む新しいテーブルABC_1が作成されます。ただし、制約(キー、デフォルト値など)はコピーされません。

毎回異なるテーブル名でこのクエリを複数回実行できます。


データをコピーする必要がなく、同じ列構造を持つ新しい空のテーブルを作成する場合にのみ、偽の式でWHERE句を追加します。

SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;
167
Mahmoud Gamal

SSMS UIを介したスキーマのコピー(DDLの生成)

SSMSで、データベースをObject Explorerに展開し、Tablesに移動して、目的のテーブルを右クリックしてScript Table Asを選択します。 作成先新しいクエリエディターウィンドウ。テーブル名を変更するには、検索と置換(CTRL + H)を実行します(つまり、検索対象)にABCを入力しますフィールドとReplace WithABC_1をクリックしてからOK)をクリックします。

T-SQLを介したスキーマのコピー

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
14
JohnLBevan

すべての制約とキーを使用してテーブルを複製する場合は、次の手順に従います。

  1. SQL Management Studioでデータベースを開きます。
  2. 複製するテーブルを右クリックします。
  3. -> Create to-> New Query Editor WindowとしてScript Tableを選択します。これにより、新しいクエリウィンドウでテーブルを再作成するスクリプトが生成されます。
  4. スクリプト内のテーブル名と相対キーと制約を変更します。
  5. スクリプトを実行します。

次に、データをコピーするには、次のスクリプトを実行します。

SET IDENTITY_INSERT DuplicateTable ON

INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... ) 
SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable

SET IDENTITY_INSERT DuplicateTable OFF
6
Rousonur Jaman

第一オプション

select *
  into ABC_1
  from ABC;

2番目のオプション:SSISを使用します。つまり、オブジェクトエクスプローラーでデータベースを右クリック>すべてのタスク>データをエクスポート

  • ソースとターゲット:DB
  • ソース表:ABC
  • ターゲット表:ABC_1(表が作成されます)
3
Claude

これは別のオプションです。

select top 0 * into <new_table> from <original_table>
1
Keni

sQL Server Management Studioまたはnetcatを使用すると、SQLの操作が簡単になります。

1
gasroot

テーブルとそのデータ、制約、トリガーをコピーするには、SSISを記述する必要があります。組織には、kalrom SystemsのKal Adminというソフトウェアがあり、ダウンロード用の無料バージョンがあります(テーブルのコピー機能はオプションだと思います)

1
Chris D