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
ステートメントを使用して複製を作ってみましょう。
- 複製元のテーブルを作成:
CREATE TABLE SRC_TBL (
USER_CD VARCHAR(10) PRIMARY KEY,
USER_NAME VARCHAR(100) NOT NULL,
CREATE_DATE DATETIME NOT NULL,
UPDATE_DATE DATETIME
)
- データを投入:
INSERT INTO SRC_TBL VALUES
('0001','山田太郎',CURRENT_TIMESTAMP,NULL),
...
- テーブルを複製する:
SELECT * INTO DEST_TBL FROM SRC_TBL
この方法でテーブルをコピーすると、複製作業が非常に簡単かつ迅速に行えるため、テスト環境の準備やデータのバックアップが効率的になります。
まとめ
SQL ServerのSELECT * INTO
ステートメントを用いることで、テーブルのコピーを簡単に実行できます。ただし、この方法では主キー、制約、トリガー、インデックスなどの構造はコピーされないため、必要に応じて追加の手順が必要になることを忘れないでください。SQL Serverでのテーブル管理をより効率的に行うために、この便利なステートメントをぜひ活用してみてください。
0 件のコメント:
コメントを投稿