將表資料生成Insert插入語句

2021-05-24 13:11:16 字數 2746 閱讀 7479

--參考一下這個

--將表資料生成sql指令碼的儲存過程

--create procedure dbo.uspoutputdata

declare @tablename sysname

select @tablename='dbo.sys_roleinfo'   ----(表名)

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

將表中的資料生成INSERT語句

create procedure dbo outputdata tablename varchar 100 表名 asdeclare isidentity int declare columnname varchar 100 列名 declare typename varchar 100 資料型別 ...

對單錶資料生成insert語句

功能 對單錶資料生成insert語句 約束 1.只能單錶 2.insert語句包括主鍵資料 3.不進行資料有效性檢查 4.採用了簡單資料處理,如果對錶中含了不可轉換成varchar的列,則有可能失敗 5.行中有null值的行將失敗 6.執行生成的insert語句組前,如果表有自編號字段,請先使用se...

將表中資料轉換成Insert語句

object storedprocedure dbo spgeninsertsql script date 02 01 2012 10 48 38 set ansi nulls on goset quoted identifier on goalter procedure dbo spgeninse...