テーブルを他のパソコンへコピーしたい

データベースにあるテーブルを内容を含めて、他のパソコンのデータベースへコピーしたい。ネットワークでコピーする手もあるだろうけど、ここでは、SQLを使う方法を。


SQLServerを使っているなら、SQL Server Management Studioも使っているはず。このソフトを使うと、テーブルをコピーするSQLを作ることができる。

テーブルをコピーするSQLとは、つまり下記のようなSQLのこと。このSQLをコピー先のパソコンで実行すれば、テーブルができて、データも登録される。

create table xxx ( x int, ... )
go
insert into xxx (x, ...) values(1, ...) 
insert into xxx (x, ...) values(2, ...) 
insert into xxx (x, ...) values(3, ...) 

ソフトを触っていればSQLを作るメニューを見つけることができるかもしれないが、そのまま動かすとINSERTの無いSQLが作られる。「なにこれ使えない」と早とちりする人もいいそうだけど、ちゃんと使えます。

手順は以下の通り。
  1. SQL Server Management Studioのオブジェクトエクスプローラ(画面左側)で、コピーしたテーブルがあるデータベースを選んで、右クリック→「タスク」→「スクリプトの生成」を選ぶ。
  2. 画面が表示される。「次へ」をクリック。
  3. 次の画面でコピーしたいテーブルを選ぶ。「特定のデータベースオブジェクトを選択」を選んで、コピーしたいテーブルに☑を付ける。そして「次へ」をクリック。
  4. 次の画面では「詳細設定」をクリック。
  5. 出てきた画面で「スクリプトを生成するデータの種類」を探して「スキーマとデータ」に変える。これでデータをINSERTするSQLが作られるようになる。
  6. あとは「次へ」をクリックしていけばSQLがファイルに保存される。

ちなみに作られるSQLは以下のような感じ。

USE [multimarker]
GO
/****** Object:  Table [dbo].[aテスト結果]    Script Date: 2017/08/21 23:33:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[aテスト結果](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [学生番号] [int] NOT NULL,
 [テスト名称] [nvarchar](50) NOT NULL,
 [英語] [int] NULL,
 [国語] [int] NULL,
 [数学] [int] NULL,
 [理科] [int] NULL,
 [社会] [int] NULL,
PRIMARY KEY CLUSTERED 
(
 [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET IDENTITY_INSERT [dbo].[aテスト結果] ON 

INSERT [dbo].[aテスト結果] ([Id], [学生番号], [テスト名称], [英語], [国語], [数学], [理科], [社会]) VALUES (1, 100, N'2016年11月テスト', NULL, 82, 95, 89, 92)
INSERT [dbo].[aテスト結果] ([Id], [学生番号], [テスト名称], [英語], [国語], [数学], [理科], [社会]) VALUES (2, 101, N'2016年11月テスト', NULL, 72, 83, 95, 87)
INSERT [dbo].[aテスト結果] ([Id], [学生番号], [テスト名称], [英語], [国語], [数学], [理科], [社会]) VALUES (5, 101, N'2016年12月テスト', NULL, 78, 95, NULL, NULL)
INSERT [dbo].[aテスト結果] ([Id], [学生番号], [テスト名称], [英語], [国語], [数学], [理科], [社会]) VALUES (8, 102, N'xxx', NULL, 78, 95, NULL, NULL)
SET IDENTITY_INSERT [dbo].[aテスト結果] OFF

コメント

このブログの人気の投稿

varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。