--參考一下這個
--將表資料生成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...