zoukankan      html  css  js  c++  java
  • 在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
  • 相关阅读:
    博客作业6
    博客作业5
    3137102127 林志坤(实验3)
    3137102127 林志坤(实验2)
    个人简介
    Bookstore项目测试缺陷报告
    自我介绍
    第6次博客园作业
    软件测试第6次作业
    《构建之法》心得体会
  • 原文地址:https://www.cnblogs.com/mq0036/p/12410595.html
Copyright © 2011-2022 走看看