表中的数据生成为SQL脚本

转载 2011年01月19日 09:49:00

创建下面的存储过程:

CREATE PROCEDURE dbo.OutputData

@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 @tablename + '对象不存在'

return

end

set @objectname=rtrim(object_name(@objectId))

if @objectname is null or charindex(@objectname,@tablename)=0

begin

print @tablename + '对象不在当前数据库中'

return

end

if OBJECTPROPERTY(@objectId,'IsTable') < > 1 -- 判断对象是否是表

begin

print @tablename + '对象不是表'

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'

--定义游标,循环取数据并生成Insert语句

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'

调用时 exec OutputData 'myuser' 其中myUser中当前数据库中存在的表。

将执行出来的结果另存为csv文件即可.

相关文章推荐

将数据生成为SQL的insert脚本

  • 2006年01月13日 09:51
  • 50KB
  • 下载

SQL SERVER:把表里的数据导出成为INSERT INTO脚本的存储过程

declare @objectId int set @objectId=object_id('proc_insert') if @objectId is not null begin drop...

oracle批量清空表数据sql脚本

  • 2016年06月20日 14:28
  • 260B
  • 下载

MySQL导入和导出sql脚本-导出表中前n条数据

转自:http://blog.csdn.net/xiaoyu411502/article/details/5319232 首先,使用mysqldump命令的前提是,在Cmd中进入mysql安装目录下的...

SQL SERVER 表数据导出脚本

  • 2015年05月28日 19:20
  • 4KB
  • 下载

将表数据生成SQL脚本的存储过程

--将表数据生成SQL脚本的存储过程 CREATE PROCEDURE dbo.UspOutputData @tablename sysname AS declare @colum...
  • sz_bdqn
  • sz_bdqn
  • 2012年02月15日 00:12
  • 1186

分享一个SQL SERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

分享一个SQL SERVER脚本 (计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE ...
  • kxjrzyk
  • kxjrzyk
  • 2015年02月28日 14:34
  • 468

SQL 可以将表中数据转换成insert脚本的存储过程-spGenInsertSQLHan

可以将表中数据转换成insert脚本的存储过程-spGenInsertSQLHan。if exists (select * from dbo.sysobjects where id = object_...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:表中的数据生成为SQL脚本
举报原因:
原因补充:

(最多只允许输入30个字)