テーブル間での列のコピー (データベース エンジン)

適用対象: SQL Server 2016 (13.x) 以降 Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

このトピックでは、SQL Server で、SQL Server Management Studio または Transact-SQL を使用して、列の定義のみ、または定義とデータの両方をコピーすることで、あるテーブルから別のテーブルに列をコピーする方法について説明します。

このトピックの内容

はじめに

制限事項と制約事項

別名データ型の列をデータベース間でコピーする場合、コピー先のデータベースで同じ別名データ型を使用できない場合があります。 その場合、コピー先データベースで使用できる基本データ型の中で最も近いデータ型がその列に割り当てられます。

セキュリティ

アクセス許可

テーブルに対する ALTER 権限が必要です。

SQL Server Management Studio を使用する

テーブル間で列の定義をコピーするには

  1. コピーする列を含むテーブルおよびコピー先のテーブルを右クリックして [デザイン]をクリックし、それらのテーブルを開きます。

  2. コピーする列を含むテーブルのタブをクリックして、コピーする列を選択します。

  3. [編集] メニューの [コピー]をクリックします。

  4. 列をコピーする先のテーブルのタブをクリックします。

  5. コピーした列を挿入する列を選択し、 [編集] メニューの [貼り付け]をクリックします。

テーブル間でデータをコピーするには

  1. 前述の列定義のコピーの指示に従います。

    注意

    テーブル間でデータのコピーを始める前に、コピー先の列のデータ型が、コピー元の列のデータ型と互換性があることを確認してください。

  2. 新しいクエリ エディター ウィンドウを開きます。

  3. クエリ エディターを右クリックし、 [エディターでクエリをデザイン]をクリックします。

  4. [テーブルの追加] ダイアログ ボックスで、コピー元テーブルとコピー先テーブルを選択し、 [追加]をクリックして [テーブルの追加] ダイアログ ボックスを閉じます。

  5. クエリ エディターの空いている領域を右クリックし、[変更の種類] をポイントして [結果の挿入] をクリックします。

  6. [結果の挿入先テーブルの選択] ダイアログ ボックスで、コピー先テーブルを選択します。

  7. クエリ デザイナーの上部で、コピー元テーブル内のコピー元列をクリックします。

  8. これで、クエリ デザイナーで INSERT クエリが作成されました。 [OK] をクリックして、クエリを元のクエリ エディター ウィンドウに配置します。

  9. クエリを実行して、コピー元テーブルからコピー先テーブルにデータを挿入します。

Transact-SQL の使用

テーブル間で列の定義をコピーするには

  1. Transact-SQL ステートメントを使用して、個々の列をあるテーブルから別の既存のテーブルにコピーすることはできません。 ただし、SELECT INTO を使用して、既定のファイル グループに新しいテーブルを作成し、クエリの結果得られた行をそのテーブルに挿入することができます。 詳細については、「INTO 句 (Transact-SQL)」を参照してください。

テーブル間でデータをコピーするには

  1. オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。

    USE AdventureWorks2022;  
    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