SQL Serverで簡単!テーブルをコピーする方法

2024年2月23日金曜日

SQL Server

t f B! P L

SQL Serverを使用している中で、テスト環境の構築やデータのバックアップなど、既存のテーブルをコピーしたい場面は頻繁にあります。この記事では、SQL Serverでテーブルをコピー(複製)するための簡単な方法を、具体的な例と共に紹介します。

スポンサーリンク

はじめに:SELECT INTO ステートメントの利点

SQL Serverには、テーブルのコピーを簡単に作成できるSELECT * INTOステートメントがあります。この方法の利点は、既存テーブルから新しいテーブルを直接作成し、データをコピーすることができる点です。しかし、主キー、制約、トリガー、インデックスなどのテーブルの構造はコピーされませんので、注意が必要です。

基本的な使い方

基本的なSELECT * INTOステートメントの構文は以下のようになります。

SELECT * INTO 新しいテーブル名 FROM 元のテーブル名

このステートメントを実行すると、元のテーブルの全データが新しいテーブルにコピーされ、新しいテーブルも同時に作成されます。列名とデータ型は元のテーブルから引き継がれます。

条件を指定してデータをコピーする

特定の条件に一致するデータのみをコピーしたい場合は、WHERE句を追加します。

SELECT * INTO 新しいテーブル名 FROM 元のテーブル名 WHERE 条件

例えば、データをコピーせずにテーブル構造のみを複製したい場合は、常に偽となる条件(例:1=2)を指定します。

SELECT * INTO バックアップ先テーブル名 FROM 元テーブル名 WHERE 1=2

列を追加してテーブルをコピーする

元のテーブルのデータをコピーしつつ、新しい列を追加することも可能です。

SELECT *, 'TEST' AS 新しい列名 INTO 新しいテーブル名 FROM 元のテーブル名

このステートメントでは、全レコードの新しい列に'TEST'がセットされた状態でテーブルが複製されます。

実際にテーブルを複製してみる

以下、実際にテーブルを作成し、データを投入後、SELECT * INTOステートメントを使用して複製を作ってみましょう。

  1. 複製元のテーブルを作成:
CREATE TABLE SRC_TBL (
  USER_CD VARCHAR(10) PRIMARY KEY,
  USER_NAME VARCHAR(100) NOT NULL,
  CREATE_DATE DATETIME NOT NULL,
  UPDATE_DATE DATETIME
)
  1. データを投入:
INSERT INTO SRC_TBL VALUES 
('0001','山田太郎',CURRENT_TIMESTAMP,NULL),
...
  1. テーブルを複製する:
SELECT * INTO DEST_TBL FROM SRC_TBL

この方法でテーブルをコピーすると、複製作業が非常に簡単かつ迅速に行えるため、テスト環境の準備やデータのバックアップが効率的になります。

まとめ

SQL ServerのSELECT * INTOステートメントを用いることで、テーブルのコピーを簡単に実行できます。ただし、この方法では主キー、制約、トリガー、インデックスなどの構造はコピーされないため、必要に応じて追加の手順が必要になることを忘れないでください。SQL Serverでのテーブル管理をより効率的に行うために、この便利なステートメントをぜひ活用してみてください。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ