テーブル間での列のコピー (データベース エンジン)
このトピックでは、SQL Server Management Studioまたは Transact-SQL を使用して、2014 年SQL Serverの列定義または定義とデータのみをコピーして、テーブル間で列をコピーする方法について説明します。
このトピックの内容
作業を開始する準備:
列をコピーする方法:
はじめに
制限事項と制約事項
別名データ型の列をデータベース間でコピーする場合、コピー先のデータベースで同じ別名データ型を使用できない場合があります。 その場合、コピー先データベースで使用できる基本データ型の中で最も近いデータ型がその列に割り当てられます。
セキュリティ
アクセス許可
テーブルに対する ALTER 権限が必要です。
SQL Server Management Studio を使用する
テーブル間で列の定義をコピーするには
コピーする列を含むテーブルおよびコピー先のテーブルを右クリックして [デザイン]をクリックし、それらのテーブルを開きます。
コピーする列を含むテーブルのタブをクリックして、コピーする列を選択します。
[編集] メニューの [コピー]をクリックします。
列をコピーする先のテーブルのタブをクリックします。
コピーした列を挿入する列を選択し、 [編集] メニューの [貼り付け]をクリックします。
テーブル間でデータをコピーするには
前述の列定義のコピーの指示に従います。
注意
テーブル間でデータのコピーを始める前に、コピー先の列のデータ型が、コピー元の列のデータ型と互換性があることを確認してください。
オブジェクト エクスプローラーで、[ビュー] ノードを右クリックし、[新しいビュー] をクリックします。
[クエリ デザイナー] メニューの [クエリ タイプの変更]をポイントし、 [結果の挿入]をクリックします。
[挿入先のテーブル選択] ダイアログ ボックスで、データのコピー先のテーブルを選択し、 [OK]をクリックします。
同じテーブル内で行をコピーする場合は、コピー先テーブルと同じコピー元テーブルを追加します。
注意
[クエリ デザイナー] は、更新できるテーブルおよびビューを事前に判別できません。 そのため、 [挿入先のテーブル選択] ダイアログ ボックスのテーブルのボックスには、クエリを実行するデータ接続で使用できるテーブルおよびビューがすべて表示されます。行をコピーできないテーブルおよびビューも表示されます。
ダイアグラム ペインの本体を右クリックし、ショートカット メニューの [テーブルの追加] をクリックします。
[テーブルの追加] ダイアログ ボックスで、データのコピー元の各テーブルを選択し、 [追加]をクリックし、 [閉じる]をクリックします。
テーブルが省略形でダイアグラム ペインに表示されます。
省略形のテーブルで、データのコピー元の列のボックスをオンにします。
抽出条件ペインの [追加] 列で、各コピー先の列に対してデータのコピー元の列を選択します。
抽出条件ペインに検索条件を入力して、コピーする行を指定します。 詳細については、「 検索条件の指定 (Visual Database Tools)」を参照してください。
検索条件を指定しなかった場合は、コピー元テーブルのすべての行がコピー先テーブルにコピーされます。
概要情報をコピーする場合は、[ グループ化 ] オプションを指定します。 詳細については、「 テーブル内のすべての行の集計または集計値 (Visual Database Tools)」を参照してください。
[SQL の実行] ボタンをクリックしてクエリを実行します。
結果の挿入クエリを実行すると、 結果ウィンドウに結果は報告されません。 代わりに、コピーされた行数を示すメッセージが表示されます。
Transact-SQL の使用
テーブル間で列の定義をコピーするには
- Transact-SQL ステートメントを使用して、個々の列をあるテーブルから別の既存のテーブルにコピーすることはできません。 ただし、SELECT INTO を使用して、既定のファイル グループに新しいテーブルを作成し、クエリの結果得られた行をそのテーブルに挿入することができます。 詳細については、「INTO 句 (Transact-SQL)」を参照してください。
テーブル間でデータをコピーするには
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
[標準] ツール バーの [新しいクエリ] をクリックします。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。
USE AdventureWorks2012; GO CREATE TABLE dbo.EmployeeSales ( BusinessEntityID varchar(11) NOT NULL, SalesYTD money NOT NULL ); GO INSERT INTO dbo.EmployeeSales SELECT BusinessEntityID, SalesYTD FROM Sales.SalesPerson; GO