テーブル間での列のコピー (データベース エンジン)
このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server 2012 で列の定義のみ、または定義とデータの両方をコピーすることで、あるテーブルから別のテーブルに列をコピーする方法について説明します。
このトピックの内容
作業を開始する準備:
制限事項と制約事項
セキュリティ
列をコピーする方法:
SQL Server Management Studio
Transact-SQL
作業を開始する準備
制限事項と制約事項
別名データ型の列をデータベース間でコピーする場合、コピー先のデータベースで同じ別名データ型を使用できない場合があります。 その場合、コピー先データベースで使用できる基本データ型の中で最も近いデータ型がその列に割り当てられます。
セキュリティ
権限
テーブルに対する 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
[先頭に戻る]