您当前的位置: 首页 >  sql

[MSSQL]SQL Server里面导出SQL脚本(表数据的insert语句)(转)

发布时间:2013-06-19 13:14:22 ,浏览量:0

最近需要导出一个表的数据并生成insert语句,发现SQL Server的自带工具并米有此功能。BAIDU一下得到如下方法(亲测OK)

用这个存储过程可以实现: CREATE PROCEDURE dbo.UspOutputData  @tablename sysname  AS  declare @column varchar(1000)  declare @columndata varchar(1000)  declare @sql varchar(4000)  declare @xtype tinyint  declare @name sysname  declare @objectId int  declare @objectname sysname  declare @ident int  set nocount on  set @objectId=object_id(@tablename)  if @objectId is null -- 判断对象是否存在  begin  print 'The object not exists'  return  end  set @objectname=rtrim(object_name(@objectId))  if @objectname is null or charindex(@objectname,@tablename)=0 --此判断不严密  begin  print 'object not in current database'  return  end  if OBJECTPROPERTY(@objectId,'IsTable') < > 1 -- 判断对象是否是table  begin  print 'The object is not table'  return  end  select @ident=status&0x80 from syscolumns where id=@objectid and status&0x80=0x80  if @ident is not null  print 'SET IDENTITY_INSERT '+@TableName+' ON'  declare syscolumns_cursor cursor for select c.name,c.xtype from syscolumns c where c.id=@objectid order by c.colid  open syscolumns_cursor  set @column=''  set @columndata=''  fetch next from syscolumns_cursor into @name,@xtype  while @@fetch_status < >-1  begin  if @@fetch_status < >-2  begin  if @xtype not in(189,34,35,99,98) --timestamp不需处理,image,text,ntext,sql_variant 暂时不处理  begin  set @column=@column+case when len(@column)=0 then'' else ','end+@name  set @columndata=@columndata+case when len(@columndata)=0 then '' else ','','',' end  +case when @xtype in(167,175) then '''''''''+'+@name+'+''''''''' --varchar,char  when @xtype in(231,239) then '''N''''''+'+@name+'+''''''''' --nvarchar,nchar  when @xtype=61 then '''''''''+convert(char(23),'+@name+',121)+''''''''' --datetime  when @xtype=58 then '''''''''+convert(char(16),'+@name+',120)+''''''''' --smalldatetime  when @xtype=36 then '''''''''+convert(char(36),'+@name+')+''''''''' --uniqueidentifier  else @name end  end  end  fetch next from syscolumns_cursor into @name,@xtype  end  close syscolumns_cursor  deallocate syscolumns_cursor  set @sql='set nocount on select ''insert '+@tablename+'('+@column+') values(''as ''--'','+@columndata+','')'' from '+@tablename  print '--'+@sql  exec(@sql)  if @ident is not null  print 'SET IDENTITY_INSERT '+@TableName+' OFF'  GO 使用方法: exec UspOutputData 你的表名 然后将运行后的结果存成.sql,再用SQL Server Management Studio打开执行就Ok了!

------------------------

其实并不ok,因为转出来的sql语句,会多几个逗号,所以你要ctrl+h替换掉 。

首先,(,替换(

然后,,,,替换,

最后,,)替换)

补充:发现2008版本的直接设置呀,如图

 

如果是SQL2008 R2 是选择 数据架构 设置

合乎自然而生生不息。。。
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    106142博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0475s