データベースからデータをInsert文でエクスポートする方法

SQLServer 2008 の Management Studio を使用すると、INSERT文をエクスポートすることが出来ます。

手順


Management Studio の オブジェクト エクスプローラで、どれでもいいので、データベースを右クリック。
「タスク」-「スクリプトの生成」とクリック。




スクリプト作成ウィザード」が起動するので、「次へ」をクリック




エクスポートしたいデータベースを選択。




「データのスクリプトを生成」を True にする。ここがミソ。
2005には、このオプションはありませんでした。




今回は、データ部分が欲しいので、テーブルを選択。




エクスポートするテーブルを選択。




出力は、すぐ分かるように クエリ ウィンドウ を選びました。適宜選択。




最終確認の画面。




生成に成功したようです。




出来上がりはこんな感じ。

ファイルで出力すると、Unicode(UTF-16)形式で出力されました。

出力例

用意したデータ
項目
Cchar abcあいう
Cdatetime 2011-01-02 03:04:05.000
Cdecimal 123456789012345678
Cfloat 123.456
Cimage
Cint 123456
Cmoney 1234567890.00
Cnchar 안녕하십니까
Cntext abccdefg あいうえお 안녕하십니까 你好
Cnumeric 123456790
Cnvarchar abc あいう 안녕하십니까 你好
Ctext abcdefg
Cvarchar abc あいうえお

Cimage は、OPENROWSET を使用して登録しました。

結果
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[TypeTest](
	[Cchar] [char](10) NULL,
	[Cdatetime] [datetime] NULL,
	[Cdecimal] [decimal](18, 0) NULL,
	[Cfloat] [float] NULL,
	[Cimage] [image] NULL,
	[Cint] [int] NULL,
	[Cmoney] [money] NULL,
	[Cnchar] [nchar](10) NULL,
	[Cntext] [ntext] NULL,
	[Cnumeric] [numeric](18, 0) NULL,
	[Cnvarchar] [nvarchar](50) NULL,
	[Ctext] [text] NULL,
	[Cvarchar] [varchar](50) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
INSERT [dbo].[TypeTest] ([Cchar], [Cdatetime], [Cdecimal], [Cfloat], [Cimage], [Cint], [Cmoney], [Cnchar], [Cntext], [Cnumeric], [Cnvarchar], [Ctext], [Cvarchar]) VALUES (N'abcあいう ', CAST(0x00009E5F00328F5C AS DateTime), CAST(123456789012345678 AS Decimal(18, 0)), 123.456, 0x47494638396117000500F70000000000800000008000808000000080800080008080808080C0C0C0FF000000FF00FFFF000000FFFF00FF00FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000330000660000990000CC0000FF0033000033330033660033990033CC0033FF0066000066330066660066990066CC0066FF0099000099330099660099990099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF0000FF3300FF6600FF9900FFCC00FFFF3300003300333300663300993300CC3300FF3333003333333333663333993333CC3333FF3366003366333366663366993366CC3366FF3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC9933CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF6600006600336600666600996600CC6600FF6633006633336633666633996633CC6633FF6666006666336666666666996666CC6666FF6699006699336699666699996699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF3366FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF9933009933339933669933999933CC9933FF9966009966339966669966999966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC3399CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFFCC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFFCCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0000FF0033FF0066FF0099FF00CCFF00FFFF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33FFCC66FFCC99FFCCCCFFCCFFFFFF00FFFF33FFFF66FFFF99FFFFCCFFFFFF21F90401000010002C000000001700050000082900510814F86F204183280A1AFC57906143870F21468CB850E1408709316A94B87162468B072B3E0C08003B, 123456, 1234567890.0000, N'안녕하십니까    ', N'abccdefg あいうえお 안녕하십니까 你好', CAST(123456790 AS Numeric(18, 0)), N'abc あいう 안녕하십니까 你好', N'abcdefg', N'abc あいうえお')
登録したデータとの比較
項目 INSERT文
Cchar abcあいう N'abcあいう '
Cdatetime 2011-01-02 03:04:05.000 CAST(0x00009E5F00328F5C AS DateTime)
Cdecimal 123456789012345678 CAST(123456789012345678 AS Decimal(18, 0))
Cfloat 123.456 123.456
Cimage 0x47494638396...(略)
Cint 123456 123456
Cmoney 1234567890.00 1234567890.0000
Cnchar 안녕하십니까 N'안녕하십니까 '
Cntext abccdefg あいうえお 안녕하십니까 你好 N'abccdefg あいうえお 안녕하십니까 你好'
Cnumeric 123456790 CAST(123456790 AS Numeric(18, 0))
Cnvarchar abc あいう 안녕하십니까 你好 N'abc あいう 안녕하십니까 你好'
Ctext abcdefg N'abcdefg'
Cvarchar abc あいうえお N'abc あいうえお'

datetime型は、内部の数値で出力されているのが分かります。