sql表数据生成insert

ContractedBlock.gif ExpandedBlockStart.gif Code
alter proc spGenInsertSQL (@tablename varchar(256))   
as 
begin 
declare @SQL varchar(8000
declare @SQLValues varchar(8000
set @SQL =' (' 
set @SQLValues = 'values (''+' 
select @SQLValues = @SQLValues + cols + ' + '','' + ' ,@SQL = @SQL + '[' + name + '],'   
from   
      (
select case   
                
when xtype in (48,52,56,59,60,62,104,106,108,122,127)                                  
                     
then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end' 
                
when xtype in (58,61
                     
then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast('+ name +' as varchar)'+ '+'''''''''+' end' 
               
when xtype in (167
                     
then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end' 
                
when xtype in (231
                     
then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end' 
                
when xtype in (175
                     
then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar+ '))+'''''''''+' end' 
                
when xtype in (239
                     
then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar+ '))+'''''''''+' end' 
                
else '''NULL'''    
              
end as Cols,name 
         
from syscolumns    
        
where id = object_id(@tablename)   
      ) T   
set @SQL ='select ''INSERT INTO ['+ @tablename + ']' + left(@SQL,len(@SQL)-1)+'' + left(@SQLValues,len(@SQLValues)-4+ ');'' from '+@tablename 
print @SQL exec (@SQL
end 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值