- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2023-10-20T20:14:04+09:00","","")
#navi(../)
* SQL Serverでテーブルをコピー(複製)する SELECT INTO ステートメント [#aeaf4f38]
動作確認する前のバックアップなどで「このテーブルのコピー(複製)を作りたい」など~
SQL Server では SELECT INTO で簡単に複製(コピー)を作成できます。~
以下、実際に SELECT INTO ステートメントを使った使用例を記します。
#contents
* 動作確認環境 [#p2270648]
- SQL Server~
SELECT @@VERSION
Microsoft SQL Server 2019 (RTM-GDR) <snip>
- SQL Server Management Studio v18.12.1
* SELECT INTO で複製をつくる構文 [#hc465412]
SELECT * INTO ステートメントでテーブルの複製を作成するステートメントは以下の通りです。
SELECT * INTO [複製で作成するテーブル名] FROM [複製したいテーブル名];
以下、実際に複製元のテーブルを作り、データを投入し SELECT * INTO ステートメントを使って複製を作ってみます。
** 複製元テーブルの作成 [#j727ee62]
以下、DDLでテーブルを作成しました。
CREATE TABLE SRC_TBL (
PRODUCT_CODE VARCHAR(10) PRIMARY KEY,
PRODUCT_NAME VARCHAR(100) NOT NULL,
PRODUCT_PRICE FLOAT NOT NULL,
CREATE_DATE DATETIME NOT NULL,
UPDATE_DATE DATETIME
)
** データの投入 [#gbec76aa]
以下のINSERT文で SRC_TBLにレコードを投入しました。
INSERT INTO SRC_TBL VALUES
('msw01','Windows10',14350,CURRENT_TIMESTAMP,NULL),
('msw02','Windows12',15700,CURRENT_TIMESTAMP,NULL),
('lnx01','Debian',0,CURRENT_TIMESTAMP,NULL),
('lnx02','Arch Linux',0,CURRENT_TIMESTAMP,NULL),
('bsd01','FreeBSD',0,CURRENT_TIMESTAMP,NULL),
('bsd02','OpenBSD',0,CURRENT_TIMESTAMP,NULL)
** 投入データ確認 [#q5a83cd5]
上記 INSERT SQL 実行後、複製元である SRC_TBL を確認しました。
#ref(01.png)
** テーブルを複製する [#md195e32]
以下の SELECT * INTO で SRC_TBL を DEST_TBL というテーブル名で複製を作成します。
SELECT * INTO DEST_TBL FROM SRC_TBL
** テーブルの複製確認 [#e81b9814]
以下、SELECTでテーブル内レコードの確認と EXCEPT をつかって差分確認を行いました。~
複製されているのが確認できます。
#ref(02.png)