.net column

.NET開発者のためのブログメディア

SQL Serverでテーブルのデータをコピーする方法

2020年02月04日

SQL Serverを使っていると、別のテーブルからデータのコピーや更新をする時にデータのバックアップを取りたいということがあります。
すでにバックアップ用のテーブルが存在している場合は容易にコピーすることができます。ここでは、SQL Serverでテーブルのデータを別のテーブルにコピーする方法を紹介します。

SE
SQL Serverで別のテーブルからデータをコピーしたくて、どうやったらできるのでしょうか?
PL
すでにテーブルにデータが存在していればコピーすることは容易です。方法を一緒に確認しましょう!

SQL Serverのテーブルの作成とコピー元データの作成

ここでは、ユーザーテーブルでユーザーの情報を管理しているテーブルがあり、ユーザー情報を更新する際に、データのバックアップを別のテーブルに取るという例を考えてみます。

まず、SQL Serverでコピー元のデータを用意します。ユーザーテーブルには以下のカラムを用意します。

  • ID
  • 名前
  • メールアドレス

テーブル作成のSQL文は以下の通りとします。

コピー元(ユーザーテーブル)にデータを作成します。

以下のようにデータが作成されます。
作成したデータ

データの更新をした時に、ユーザー情報更新履歴テーブルにデータのバックアップを取るとします。
以下のようにコピー先(ユーザー情報更新履歴テーブル)のテーブルを作成します。

Usersテーブルと同じ項目で情報の履歴を管理できるようにテーブルを作成します。

SQL Serverでテーブルのデータをコピーする

データをコピーするには、select-insert文を使用します。

通常、データをテーブルに登録するにはinsert文を使用しますが、insert文が対象のカラムと対象のデータを指定して登録するのに対し、insert-select文は、テーブルからselectした結果を使用してデータを作成する構文です。

先ほど、コピー元のデータを作成する際に、以下のようにinsert文を使用しました。

コピーする場合は以下のようにinsert文が変わります。

まず、前半のinsert部分は先ほどと同様で、登録するテーブルとカラムを指定します。

後半部分で登録するデータを指定しますが、ここでselect文を使用します。

select文を使用することで、コピー元(Users)テーブルのデータをコピーしてコピー先(UserHistories)テーブルに登録することができます。

以下のようにデータがコピーされます。
データのコピー結果

SE
selectした結果をそのまま登録できるのですね。
PL
そうですね。selectした結果をinsertできるので、テーブル間のデータコピーも簡単です。

selectした結果をinsertすることでデータのコピーができる

値を指定してinsertするのではなく、selectした結果をinsertする方法でデータのコピーを行うことができます。
データのコピーは様々な用途に使用できます。selectした結果をコピーする方法は簡単なので使用してみてはいかがでしょうか。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)