テーブルを他のパソコンへコピーしたい
データベースにあるテーブルを内容を含めて、他のパソコンのデータベースへコピーしたい。ネットワークでコピーする手もあるだろうけど、ここでは、SQLを使う方法を。
SQLServerを使っているなら、SQL Server Management Studioも使っているはず。このソフトを使うと、テーブルをコピーするSQLを作ることができる。
テーブルをコピーするSQLとは、つまり下記のようなSQLのこと。このSQLをコピー先のパソコンで実行すれば、テーブルができて、データも登録される。
ソフトを触っていればSQLを作るメニューを見つけることができるかもしれないが、そのまま動かすとINSERTの無い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が作られる。「なにこれ使えない」と早とちりする人もいいそうだけど、ちゃんと使えます。
手順は以下の通り。
- SQL Server Management Studioのオブジェクトエクスプローラ(画面左側)で、コピーしたテーブルがあるデータベースを選んで、右クリック→「タスク」→「スクリプトの生成」を選ぶ。
- 画面が表示される。「次へ」をクリック。
- 次の画面でコピーしたいテーブルを選ぶ。「特定のデータベースオブジェクトを選択」を選んで、コピーしたいテーブルに☑を付ける。そして「次へ」をクリック。
- 次の画面では「詳細設定」をクリック。
- 出てきた画面で「スクリプトを生成するデータの種類」を探して「スキーマとデータ」に変える。これでデータをINSERTするSQLが作られるようになる。
- あとは「次へ」をクリックしていけば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
コメント
コメントを投稿