之前在網上看到使用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