テーブルに保存されているデータを使って SQL の INSERT 文を生成する簡単な方法(SQL Server 限定)

SQL Server Management Studio を使えばいいんです

テーブルに保存されているデータを使って INSERT クエリを生成する機能が、SQL Server Management Studio にありました。今まで、INSERT クエリは雛型しか生成できないと思い込んでいましたよ…。

INSERT クエリを生成する手順は次の通り

データベースを右クリックし、メニューから[タスク]-[スクリプトの生成(E)...]を選択します。
f:id:griefworker:20100915105329j:image

最初のページは無視して次へ。
f:id:griefworker:20100915105341j:image

「データベースオブジェクトの選択」では、今回は特定のテーブルだけ選択してみます。
f:id:griefworker:20100915105353j:image

スクリプトはデスクトップに保存します。データを INSERT するクエリを生成するので、詳細設定も必要です。
f:id:griefworker:20100915105433j:image

スクリプトを作成するデータの種類を「データのみ」に。他の項目は変更しません。これで OK。
f:id:griefworker:20100915105444j:image

選択内容を確認。
f:id:griefworker:20100915105455j:image

いざ出力。
f:id:griefworker:20100915105506j:image

出力されたクエリはこんな感じになります。

USE [Test]
GO
/****** Object:  Table [dbo].[Customer]    Script Date: 09/15/2010 10:43:18 ******/
INSERT [dbo].[Customer] ([Id], [Code], [Name]) VALUES (1, N'0001', N'Foo')
INSERT [dbo].[Customer] ([Id], [Code], [Name]) VALUES (2, N'0002', N'Bar')
INSERT [dbo].[Customer] ([Id], [Code], [Name]) VALUES (3, N'0003', N'Hoge')
INSERT [dbo].[Customer] ([Id], [Code], [Name]) VALUES (4, N'0004', N'Fuga')

今まではADO.NETを使って自作していました

でも、Management Studio に INSERT クエリ生成機能があるなら、自作ツールはもう用無しですね。

SQL Azure にテストデータを詰めるときに役立ちそうです。SQL Server のデータをそのまま SQL Azure に挿入できるとは限らないですけど。