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

SQL Serverでテーブルのデータをコピーする方法
SQL Serverを使っていると、別のテーブルからデータのコピーや更新をする時にデータのバックアップを取りたいということがあります。
すでにバックアップ用のテーブルが存在している場合は容易にコピーすることができます。ここでは、SQL Serverでテーブルのデータを別のテーブルにコピーする方法を紹介します。
- SE
- SQL Serverで別のテーブルからデータをコピーしたくて、どうやったらできるのでしょうか?
- PL
- すでにテーブルにデータが存在していればコピーすることは容易です。方法を一緒に確認しましょう!
目次
SQL Serverのテーブルの作成とコピー元データの作成
ここでは、ユーザーテーブルでユーザーの情報を管理しているテーブルがあり、ユーザー情報を更新する際に、データのバックアップを別のテーブルに取るという例を考えてみます。
まず、SQL Serverでコピー元のデータを用意します。ユーザーテーブルには以下のカラムを用意します。
- ID
- 名前
- メールアドレス
テーブル作成のSQL文は以下の通りとします。
1
2
3
4
5
|
create table Users (
id int PRIMARY KEY,
name nvarchar(50),
email nvarchar(255)
)
|
コピー元(ユーザーテーブル)にデータを作成します。
1
2
|
insert into Users(id, name, email) values(1, '山田太郎', 'taro.yamada@sample.jp')
insert into Users(id, name, email) values(2, '山田花子', 'hanako.yamada@sample.jp')
|
以下のようにデータが作成されます。
データの更新をした時に、ユーザー情報更新履歴テーブルにデータのバックアップを取るとします。
以下のようにコピー先(ユーザー情報更新履歴テーブル)のテーブルを作成します。
1
2
3
4
5
6
|
create table UserHistories (
id int PRIMARY KEY,
user_id int,
name nvarchar(50),
email nvarchar(255)
)
|
Usersテーブルと同じ項目で情報の履歴を管理できるようにテーブルを作成します。
SQL Serverでテーブルのデータをコピーする
データをコピーするには、select-insert文を使用します。
通常、データをテーブルに登録するにはinsert文を使用しますが、insert文が対象のカラムと対象のデータを指定して登録するのに対し、insert-select文は、テーブルからselectした結果を使用してデータを作成する構文です。
先ほど、コピー元のデータを作成する際に、以下のようにinsert文を使用しました。
1
2
|
insert into Users(id, name, email) values(1, '山田太郎', 'taro.yamada@sample.jp')
insert into Users(id, name, email) values(2, '山田花子', 'hanako.yamada@sample.jp')
|
コピーする場合は以下のようにinsert文が変わります。
1
2
3
|
insert into UserHistories(id, user_id, name, email)
select '1', id, name, email from Users
where id = 2
|
まず、前半のinsert部分は先ほどと同様で、登録するテーブルとカラムを指定します。
1
|
insert into UserHistories(id, user_id, name, email)
|
後半部分で登録するデータを指定しますが、ここでselect文を使用します。
2
3
|
select '1', id, name, email from Users
where id = 2
|
select文を使用することで、コピー元(Users)テーブルのデータをコピーしてコピー先(UserHistories)テーブルに登録することができます。
以下のようにデータがコピーされます。
- SE
- selectした結果をそのまま登録できるのですね。
- PL
- そうですね。selectした結果をinsertできるので、テーブル間のデータコピーも簡単です。
selectした結果をinsertすることでデータのコピーができる
値を指定してinsertするのではなく、selectした結果をinsertする方法でデータのコピーを行うことができます。
データのコピーは様々な用途に使用できます。selectした結果をコピーする方法は簡単なので使用してみてはいかがでしょうか。
Search キーワード検索
Popular 人気の記事
-
.NET Framework 3.5をWindows10にインストールする方法
2019年10月24日 -
EdgeとChromeはどう違う?それぞれのスペック7つを比較解説!
2020年09月28日 -
【VB.NET入門】DataGridViewの使い方まとめ
2019年12月22日 -
VB.NETをおすすめする3つの理由とは?VBAとの違いや勉強方法を解説
2019年12月21日 -
Windows10のテキストエディタおすすめ20選!選ぶポイント3つ
2020年04月28日
reccomended おすすめ記事
-
C#のusingステートメントでリソースの解放【Disposeとの違いとは】
2020年03月17日 -
【SQL Serverログの操作】トランザクションログの使用量を確認する方法
2020年03月16日 -
【.NETが統合】.NET 5の概要と今後のリリース予定
2020年03月05日
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
ソフトを用いた3DCGアート/東京都千代田区/【WEB面談可】/テレワーク
月給50万~50万円東京都千代田区(秋葉原駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅)