将表数据生成Insert脚本

将表数据生成Insert脚本 

 

--  ============================================= 
--
 Author: 华岭 
--
 Create date: 2008-10-28 
--
 Description: 将表数据生成Insert脚本 
--
 Demo : exec pCreateInsertScript 'BexmCodeType','dictypeid = 61'  
--
        exec pCreateInsertScript 'SYS_AUTHENROLE','1=1'
--
 ============================================= 
ALTER  proc  [ dbo ]. [ pCreateInsertScript ] ( @tablename  varchar( 256), @con  nvarchar( 400)) 
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  = 127  then  ' case when  ' +a.name + '  is null then  '' NULL ''  else  ' + ' convert(varchar(6), ' +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 
if  @con   is  not  null 
   select  @sqlstr = @sqlstr +left( @sqlstr2, len( @sqlstr2) - 1) + ' ' +left( @sqlstr1, len( @sqlstr1) - 3) + ' ) ''  from  ' + @tablename  +  '  where 1=1 and  '  +  isnull( @con, ''
else
   select  @sqlstr = @sqlstr +left( @sqlstr2, len( @sqlstr2) - 1) + ' ' +left( @sqlstr1, len( @sqlstr1) - 3) + ' ) ''  from  ' + @tablename  +  '  where 1=1 and  ' 
print  @sqlstr 
exec@sqlstr

end
 

 

使用:

SET    IDENTITY_INSERT   TableName    ON 
do    insert 
--    resume 

SET    IDENTITY_INSERT   TableName    OFF 
 

转载于:https://www.cnblogs.com/luomingui/archive/2011/09/23/2186048.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值