sql2000导出数据库的数据(以insert语句形式的脚本)

使用 sql2000的查询分析器,将数据库所有表数据提取为 insert 脚本功能,代码如下:

/*************************************************
 
导出数据库的数据,以insert语句形式存储.
 
使用方法:
  1.设置sql查询分析器
       打开SQL 查询分析器,菜单 "工具"-->"选项..." 然后在对话框中选择 "结果"面板,
       修改 "每列最多字符数" 为 8000
 
  2.用sql查询分析器打开此文档,选择要导出的的数据库,选择“文本显示结果( Ctrl + T )",执行.
 
  3.返回结果即是选定数据库的相应数据,并且针对每个表的插入前作了暂停约束(触发器等)和插入后恢复约束的设置
 
longxu 2006-2
--------------------------------
 
060302a 添加功能,过滤掉没有数据的表
060418a 添加功能: 增加过滤条件参数
061130a 过滤掉 dtproperties 表
 
***************************************************/
 
 
 
 
if exists (select * from [dbo].sysobjects where id = object_id(N'[dbo].[GetFieldValue]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[GetFieldValue]
Go
 
/*
 输入列名和值,通过检查列的类型,将输入的值转为特定的字串
 Longxu , 2006-02-20
*/
create function GetFieldValue( @ObjID int ,@fieldName as sysname,@invalue as sql_variant )
returns nvarchar(4000)
as
begin
 declare @needque as bit,@xtype as tinyint,@typeName sysname,@Value as nvarchar(4000)
 set @needque=0
 
 if @invalue is null return 'NULL'
 
 set @Value=convert(nvarchar(4000),@invalue)
 select  @xtype=xtype from syscolumns  where id=@objID and name=@fieldName
 
 select  @typeName=name from systypes where xtype=@xtype
 
 if (@typeName='datetime'      or  
     @typeName='smalldatetime' )  
    begin
     set @Value=''''+convert(varchar(20),@invalue,120)+''''      
    end  
 
 if (@typeName='nvarchar'      or  
     @typeName='varchar'       or
     @typeName='char'          or  
     @typeName='sysname'       or
     @typeName='nchar'         or  
     @typeName='ntext'         or
     @typeName='text' )   
    begin     
     set @Value=replace(@Value,'''','''''')
     set @Value=''''+@value+''''      
    end  
 return @Value
 
end
 
go
 
 
if exists (select * from [dbo].sysobjects where [id] = object_id(N'[dbo].[GetInsertStringFromTable]')  and OBJECTPROPERTY([id], N'IsProcedure') = 1 )
drop procedure [dbo].[GetInsertStringFromTable]
Go
/*
 输入表的 ID ,将整个表的数据转换为 insert 语名
 Longxu , 2006-02-20,2006-02-21
*/
create procedure GetInsertStringFromTable  @ObjID int ,@FilterStr nvarchar(4000) = ''
 
as
begin
 
  declare @columnsStr as nvarchar(4000)
  declare @valuesStr as nvarchar(4000)
  declare @fieldname as sysname
 
  set @columnsStr=''
  set @valuesStr=''
 
  if object_id('dtproperties')=@ObjID  return
 
  DECLARE columns_cursor CURSOR FOR  
  SELECT name
  FROM syscolumns
  WHERE [id] = @ObjID --and status<>0x80
   
  OPEN columns_cursor
   
  FETCH NEXT FROM columns_cursor  
  INTO @fieldname
   
  WHILE @@FETCH_STATUS = 0
  BEGIN   
    set @columnsStr=@columnsStr+',['+@fieldname+']'
     
    set @valuesStr=@valuesStr+'+'',''+'+'dbo.GetFieldValue('+ltrim(STR(@ObjID))+','''+@fieldname+''',['+@fieldname+']) '
 
    FETCH NEXT FROM columns_cursor  
    INTO @fieldname
  END   
  CLOSE columns_cursor
  DEALLOCATE columns_cursor
 
 
 
  if @columnsStr<>''
  begin
    set @columnsStr=substring(@columnsStr,2,len(@columnsStr)-1)
    set @valuesStr=substring(@valuesStr,len('+'',''+')+1,len(@valuesStr)-len('+'',''+'))
  end
 
  declare @sql as Nvarchar(4000)
  declare @headerStr Nvarchar(4000)
 
  set @headerStr='[--'+object_name(@ObjID)+convert(varchar(20),getdate(),120)+']'
 
   
  set @sql='if exists(Select top 1 * from ['+object_name(@ObjID)+'] '
      IF @FilterStr<>'' and not (@FilterStr is null ) set @sql= @sql+' Where '+@FilterStr
  set @sql= @sql+' )'
  set @sql=@sql+'select '+@headerStr+' from ( '
  set @sql=@sql+'Select 0 as a,''ALTER TABLE  ['+object_name(@ObjID)+'] NOCHECK CONSTRAINT All --暂停约束'' as '+@headerStr+'   union  '
 
  set @sql=@sql+'Select 1 as a,''ALTER TABLE  ['+object_name(@ObjID)+'] DISABLE TRIGGER    ALL --暂停触发器'' as '+@headerStr+'   union  '
 
  if exists(SELECT name  FROM syscolumns  WHERE [id] = @ObjID and status=0x80)
   begin
     set @sql=@sql+'Select 2, ''Set IDENTITY_INSERT   ['+object_name(@ObjID)+'] ON --暂停标识列'' union   '
   end
 
  set @sql=@sql+' Select 3, '
  set @sql= @sql+'''insert into [' + object_name(@ObjID)+']  ('+@columnsStr+'  ) values('' +  '+@valuesStr+'  +'')''  '
  set @sql= @sql+'  from ['+object_name(@ObjID)+']  '+char(13)
  IF @FilterStr<>'' and not (@FilterStr is null ) set @sql= @sql+' Where '+@FilterStr
 
 
 
  if exists(SELECT name  FROM syscolumns  WHERE [id] = @ObjID and status=0x80)
    begin
      set @sql=@sql+' union Select 4, ''Set IDENTITY_INSERT  ['+object_name(@ObjID)+'] OFF --恢复标识列''   '
    end
 
  set @sql=@sql+' union Select 5,''ALTER TABLE  ['+object_name(@ObjID)+'] ENABLE TRIGGER     ALL --恢复触发器 ''  '
 
  set @sql=@sql+' union Select 6,''ALTER TABLE  ['+object_name(@ObjID)+'] CHECK CONSTRAINT All --恢复约束 ''  '
  set @sql=@sql+' ) as a order by a '
 
 -- print '-----begin insert data into table '+object_name(@ObjID)   
 
  exec  sp_executesql @sql
 -- print '-----end insert data into table '+object_name(@ObjID)
   
end
 
 
go
 
 
if exists (select * from [dbo].sysobjects where [id] = object_id(N'[dbo].[GetInsertStringFromCurrentDB]')  and OBJECTPROPERTY([id], N'IsProcedure') = 1 )
drop procedure [dbo].[GetInsertStringFromCurrentDB]
Go
 
/*
将当前数据库所有数据,转换成 insert 语句
longxu, 2006-02-20
 
*/
create procedure GetInsertStringFromCurrentDB @globalFilterStr nvarchar(4000)=''
as
begin
 
set nocount on
print'/*****************************************************'
print' 数据库数据初始化脚本 '
print' '
print' 数据库名 : '+db_name()
print' 版本   : '
print' 内容   : 系统初始化数据'
 
print' 创建时间 : '+ convert(varchar(20),getdate(),120)
print' 创建主机 : '+host_name()
print' '
print' 过滤条件 : '+@globalFilterStr
print'*****************************************************/'
print' '
 
 
 
select   
 
case  
 when objectproperty(id , N'ExecIsFirstDeleteTrigger')=1 then  
      '--将 '+name+ '指定为相应表的第一个DELETE触发器 '+char(13)+char(10)+
      'EXEC sp_settriggerorder @triggername= '''+name+''', @order=''first'', @stmttype = ''DELETE'' '
 when objectproperty(id , N'ExecIsFirstInsertTrigger')=1 then  
      '--将 '+name+ '指定为相应表的第一个INSERT触发器 '+char(13)+char(10)+
      'EXEC sp_settriggerorder @triggername= '''+name+''', @order=''first'', @stmttype = ''INSERT'' '
 when objectproperty(id , N'ExecIsFirstUpdateTrigger')=1 then  
      '--将 '+name+ '指定为相应表的第一个UPDATE触发器 '+char(13)+char(10)+
      'EXEC sp_settriggerorder @triggername= '''+name+''', @order=''first'', @stmttype = ''UPDATE'' '
 
 
 when objectproperty(id , N'ExecIsLastDeleteTrigger')=1 then  
      '--将 '+name+ '指定为相应表的最后一个DELETE触发器 '+char(13)+char(10)+
      'EXEC sp_settriggerorder @triggername= '''+name+''', @order=''Last'', @stmttype = ''DELETE'' '
 when objectproperty(id , N'ExecIsLastInsertTrigger')=1 then  
      '--将 '+name+ '指定为相应表的最后一个INSERT触发器 '+char(13)+char(10)+
      'EXEC sp_settriggerorder @triggername= '''+name+''', @order=''Last'', @stmttype = ''INSERT'' '
 when objectproperty(id , N'ExecIsLastUpdateTrigger')=1 then  
      '--将 '+name+ '指定为相应表的最后一个UPDATE触发器 '+char(13)+char(10)+
      'EXEC sp_settriggerorder @triggername= '''+name+''', @order=''Last'', @stmttype = ''UPDATE'' '
 
end+char(13)+char(10)+'GO' as [--添中触发器顺序]
 
from sysobjects
where  
objectproperty(id , N'ExecIsFirstDeleteTrigger')=1 or  
objectproperty(id , N'ExecIsFirstInsertTrigger')=1 or  
objectproperty(id , N'ExecIsFirstUpdateTrigger')=1 or  
 
objectproperty(id , N'ExecIsLastDeleteTrigger')=1 or  
objectproperty(id , N'ExecIsLastInsertTrigger')=1 or  
objectproperty(id , N'ExecIsLastUpdateTrigger')=1  
 
IF @globalFilterStr<>'' set @globalFilterStr=Replace(@globalFilterStr,'''','''''')
 
declare @sql varchar(1000)
set @sql='declare @objid int  declare @filterStr nvarchar(4000)  '
set @sql=@sql+'set @objid=object_id(''?'')  '
IF @globalFilterStr<>'' set @sql=@sql+'set @filterStr='''+@globalFilterStr+'''  '
 set @sql=@sql+'exec GetInsertStringFromTable @objid, @filterStr '
exec sp_MSForeachtable
@command1=@sql
end
Go
 
 
 
-------------------------------------------------------------------------
--使用方法如下:
--如以下功能不够用,请按例子扩展功能
-------------------------------------------------------------------------
 
 
--1. 将所有的表 ,控制列为 "BC" 的数据导出
exec GetInsertStringFromCurrentDB    --@globalFilterStr='控制=''BC'' '
Go
 
 
 
--2. 将所有的表 ,状态列非 "系统保留" 的数据导出
--exec GetInsertStringFromCurrentDB    @globalFilterStr='状态<>''系统保留'' '
Go
 
 
 
 
--3. 将指定的表,状态列为 "系统保留" 的数据导出
/*
declare @objid int  
set @objid=object_id('物料')
exec GetInsertStringFromTable    @objid=@objid,    @FilterStr=' 状态=''系统保留'' '
*/
go
 
 
--4. 将指定的表,状态列非 "系统保留" 的数据导出
/*
declare @objid int  
set @objid=object_id('物料')
exec GetInsertStringFromTable    @objid=@objid,    @FilterStr=' 状态<>''系统保留'' '
*/
go
 
 
 
 
 
------------------------------------------------------------------------------------------------------------
 
if exists (select * from [dbo].sysobjects where [id] = object_id(N'[dbo].[GetInsertStringFromCurrentDB]')  and OBJECTPROPERTY([id], N'IsProcedure') = 1 )
drop procedure [dbo].[GetInsertStringFromCurrentDB]
Go
 
if exists (select * from [dbo].sysobjects where [id] = object_id(N'[dbo].[GetInsertStringFromTable]')  and OBJECTPROPERTY([id], N'IsProcedure') = 1 )
drop procedure [dbo].[GetInsertStringFromTable]
Go
 
if exists (select * from [dbo].sysobjects where id = object_id(N'[dbo].[GetFieldValue]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[GetFieldValue]
Go


 

 

导出的脚本格式如下:


/*****************************************************
 数据库数据初始化脚本
 
 数据库名 : pubs
 版本   : 
 内容   : 系统初始化数据
 创建时间 : 2009-09-04 13:59:21
 创建主机 : HS-WE
 
 过滤条件 : 
*****************************************************/
 
--添中触发器顺序                                                                                                                                                                                                                                                                                                                                                                                    
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--titleauthor2009-09-04 13:59:21                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ALTER TABLE  [titleauthor] NOCHECK CONSTRAINT All --暂停约束
ALTER TABLE  [titleauthor] DISABLE TRIGGER    ALL --暂停触发器
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('172-32-1176','PS3333',1,100)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('213-46-8915','BU1032',2,40)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('213-46-8915','BU2075',1,100)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('238-95-7766','PC1035',1,100)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('267-41-2394','BU1111',2,40)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('267-41-2394','TC7777',2,30)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('274-80-9391','BU7832',1,100)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('409-56-7008','BU1032',1,60)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('427-17-2319','PC8888',1,50)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('472-27-2349','TC7777',3,30)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('486-29-1786','PC9999',1,100)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('486-29-1786','PS7777',1,100)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('648-92-1872','TC4203',1,100)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('672-71-3249','TC7777',1,40)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('712-45-1867','MC2222',1,100)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('722-51-5454','MC3021',1,75)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('724-80-9391','BU1111',1,60)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('724-80-9391','PS1372',2,25)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('756-30-7391','PS1372',1,75)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('807-91-6654','TC3218',1,100)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('846-92-7186','PC8888',2,50)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('899-46-2035','MC3021',2,25)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('899-46-2035','PS2091',2,50)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('998-72-3567','PS2091',1,50)
insert into [titleauthor]  ([au_id],[title_id],[au_ord],[royaltyper]  ) values('998-72-3567','PS2106',1,100)
ALTER TABLE  [titleauthor] ENABLE TRIGGER     ALL --恢复触发器
ALTER TABLE  [titleauthor] CHECK CONSTRAINT All --恢复约束

--stores2009-09-04 13:59:21                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ALTER TABLE  [stores] NOCHECK CONSTRAINT All --暂停约束
ALTER TABLE  [stores] DISABLE TRIGGER    ALL --暂停触发器
insert into [stores]  ([stor_id],[stor_name],[stor_address],[city],[state],[zip]  ) values(6380,'Eric the Read Books','788 Catamaugus Ave.','Seattle',WA,98056)
insert into [stores]  ([stor_id],[stor_name],[stor_address],[city],[state],[zip]  ) values(7066,'Barnum''s','567 Pasadena Ave.','Tustin',CA,92789)
insert into [stores]  ([stor_id],[stor_name],[stor_address],[city],[state],[zip]  ) values(7067,'News & Brews','577 First St.','Los Gatos',CA,96745)
insert into [stores]  ([stor_id],[stor_name],[stor_address],[city],[state],[zip]  ) values(7131,'Doc-U-Mat: Quality Laundry and Books','24-A Avogadro Way','Remulade',WA,98014)
insert into [stores]  ([stor_id],[stor_name],[stor_address],[city],[state],[zip]  ) values(7896,'Fricative Bookshop','89 Madison St.','Fremont',CA,90019)
insert into [stores]  ([stor_id],[stor_name],[stor_address],[city],[state],[zip]  ) values(8042,'Bookbeat','679 Carson St.','Portland',OR,89076)
ALTER TABLE  [stores] ENABLE TRIGGER     ALL --恢复触发器
ALTER TABLE  [stores] CHECK CONSTRAINT All --恢复约束
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wxgnolux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值