#author("2023-10-20T20:14:47+09:00","","") #author("2023-10-20T20:17:48+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 [複製で作成するテーブル名] 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) #br 以上、SQL Server で SELECT * INTO 構文を使ってテーブルの複製を作成する手順でした。