自动生成插入数据

ContractedBlock.gif ExpandedBlockStart.gif Code
Create     proc     [dbo].[proc_insert]     (@tablename     varchar(256))       
  
as       
  
begin       
                        
set     nocount     on       
                        
declare     @sqlstr     varchar(4000)       
                        
declare     @sqlstr1     varchar(4000)       
                        
declare     @sqlstr2     varchar(4000)       
                        
select     @sqlstr='select     ''insert     '+@tablename       
                        
select     @sqlstr1=''       
                        
select     @sqlstr2='     ('       
                        
select     @sqlstr1=     '     values     (     ''+'       
                        
select     @sqlstr1=@sqlstr1+col+'+'',''+'     ,@sqlstr2=@sqlstr2+name     +','     from     (select     case           
  
--                         when     a.xtype     =173     then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name     +')'+'     end'       
                        when     a.xtype     =104     then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'convert(varchar(1),'+a.name     +')'+'     end'       
                        
when     a.xtype     =175     then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')'     +     '+'''''''''+'     end'       
                        
when     a.xtype     =61         then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'''''''''+'+'convert(varchar(23),'+a.name     +',121)'+     '+'''''''''+'     end'       
                        
when     a.xtype     =106     then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name     +')'+'     end'       
                        
when     a.xtype     =62         then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'convert(varchar(23),'+a.name     +',2)'+'     end'       
                        
when     a.xtype     =56         then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'convert(varchar(11),'+a.name     +')'+'     end'       
                        
when     a.xtype     =60         then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'convert(varchar(22),'+a.name     +')'+'     end'       
                        
when     a.xtype     =239     then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')'     +     '+'''''''''+'     end'       
                        
when     a.xtype     =108     then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name     +')'+'     end'       
                        
when     a.xtype     =231     then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')'     +     '+'''''''''+'     end'       
                        
when     a.xtype     =59         then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'convert(varchar(23),'+a.name     +',2)'+'     end'       
                        
when     a.xtype     =58         then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'''''''''+'+'convert(varchar(23),'+a.name     +',121)'+     '+'''''''''+'     end'       
                        
when     a.xtype     =52         then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'convert(varchar(12),'+a.name     +')'+'     end'       
                        
when     a.xtype     =122     then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'convert(varchar(22),'+a.name     +')'+'     end'       
                        
when     a.xtype     =48         then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'convert(varchar(6),'+a.name     +')'+'     end'       
  
--                         when     a.xtype     =165     then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name     +')'+'     end'       
                        when     a.xtype     =167     then     'case     when     '+a.name+'     is     null     then     ''NULL''     else     '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')'     +     '+'''''''''+'     end'       
                        
else     '''NULL'''       
                        
end     as     col,a.colid,a.name       
                        
from     syscolumns     a     where     a.id     =     object_id(@tablename)     and     a.xtype     <>189     and     a.xtype     <>34     and     a.xtype     <>35     and         a.xtype     <>36       
                        )t     
order     by     colid       
                              
                        
select     @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+')     '+left(@sqlstr1,len(@sqlstr1)-3)+')''     from     '+@tablename       
  
--         print     @sqlstr       
                        exec(     @sqlstr)       
                        
set     nocount     off       
  
end       

 

有了这个以后我们方便的用来制作一些安装文件。导入原始的数据

 

2011-6-7

SSMS tools比这个好用

你可能感兴趣的:(自动生成插入数据)