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

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

作者:互联网

--不影响日后工作的造数据步骤:
--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

标签:--,数据,备份,Server,单表,SQL,tb,into,select
来源: https://www.cnblogs.com/automata/p/15906780.html