在SQLServer中使⽤SQL语句备份单表-造数据-还原表
之前在⽹上看到使⽤sql语句进⾏单表的备份和还原的,但是好像是针对Oracle数据库的。我们现在项⽬上使⽤的是SQL Server数据库。就想能否也可以使⽤这种⽅式。参考:
按照⽹上的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;
sqlserver备份表语句--若要向已经存在的表中备份数据库,使⽤ 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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。