免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3061 | 回复: 1
打印 上一主题 下一主题

insert??? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-04-21 16:57 |只看该作者 |倒序浏览
能否将表中的数据备份成一条条insert into 的语句?

论坛徽章:
0
2 [报告]
发表于 2003-04-21 17:11 |只看该作者
当然可以!!!以下是源代码!!!!


use database_name
go
--输入表名,生成插入语句
if Exists( select name from sysobjects  where name= \'proc_insert\' and type=\'p\')
drop procedure proc_insert
go
create proc 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 =127 then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(20),\'+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 =34  then \'case when \'+a.name+\' is null then \'\'NULL\'\' else \'+\'convert(varchar(100),\'+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

exec( @sqlstr)
set nocount off
end
go

在查询分析器中执行

Exec Proc_insert  table_name
讲显示出Insert 语句。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP