在SQL Server中使用SQL语句备份单表-造数据-还原表

之前在网上看到使用sql语句进行单表的备份和还原的,但是好像是针对Oracle数据库的。我们现在项目上使用的是SQL Server数据库。就想能否也可以使用这种方式。

参考:在Oracle中使用SQL语句备份单表-造数据-还原表  

按照网上的SQL语句,修改可以用于SQL Server数据库,需要的可以测试下:

 

--不影响日后工作的造数据步骤:
--1、备份表内的内容,
--2、清表内内容,
--3、给表造数据,
--4、还原表
--5、检查还原后的两表数据是否相同
------------------------------------------------------------
--1、备份表内的内容,
--select * into tb_bak from tb Where [条件1,条件2];
--tb 原数据表
--tb_bak 要备份的新表名
--若只需要表头不需要表数据的话,加上条件 select * into tb_bak from tb where 1=0;
--若要向已经存在的表中备份数据库,使用 insert into 目标表名 select * from 源表名; 

select * into dbo.t_scs_0304 from dbo.t_scs;
------------------------------------------------------------
--2、清表内内容,
--delete <表名>; 
--删掉一整个表内的数据
--若只删除部分表数据的话,加上条件 delete <表名> where 字段1=字段值;
delete dbo.t_scs;

------------------------------------------------------------
--3、给表造数据,
declare 
 @num int,
 @inTime datetime
 set @num =1
 set @inTime = SYSDATETIME()
 while(@num<5)
 begin 
   insert t_scs (scs_Name,scs_DateTime) values('王麻子'+ cast(@num as varchar),@inTime)
   set @num = @num+1
   set @inTime = DATEADD(mi,1,@inTime)
 end

------------------------------------------------------------ 
--4、还原表
--清空现有表中的数据
delete dbo.t_scs 

--把备份表中的数据复制到原表去
--方法一:使用 insert into 目标表  select * from 源表对数据恢复
--若目标表有使用自增id作为主键的,需要设置 set IDENTITY_INSERT  dbo.t_scs on 和 set IDENTITY_INSERT  dbo.t_scs off
--方法二:根据表的主键更新记录,更新效率高:update table1 set field1=table2.field1,field2=table2.field2 from table2 where table1.id=table2.id

set IDENTITY_INSERT  dbo.t_scs on
insert into dbo.t_scs (id,scs_Name,scs_DateTime) select * from dbo.t_scs_0304; 
set IDENTITY_INSERT dbo.t_scs off

------------------------------------------------------------ 
--5、检查数据是否相同
--如果数据量比较少的话,那么你可以直接自己对比两表,查看数据是否相同;
--也可以使用 intersect和except 语句进行检查

--查询出两表的相同数据
select * from t_scs
intersect
select * from t_scs_0304;

--查询出两表不同的数据
select * from t_scs
except
select * from t_scs_0304;

--把备份的表删掉。
drop table t_scs_0304

 

posted on 2020-03-04 17:07  jack_Meng  阅读(7090)  评论(0编辑  收藏  举报

导航