2010-04-22 20 views

回答

19

复制你的表到一个表归档:

SELECT * INTO ArchiveTable FROM MyTable 

删除表中的所有条目:

DELETE * FROM MyTable 
+0

冠军!谢谢! – iamjonesy 2010-04-22 14:17:21

+2

只有当ArchiveTable尚未创建时才可以使用,否则会出现错误“数据库中已存在名为'ArchiveTable'的对象。” – Harvey 2016-09-15 10:35:14

+0

TRUNCATE比DELETE更好。 – 2018-02-09 15:40:17

12

没有SQL服务器周围进行测试,但我认为这只是:

insert into newtable select * from oldtable; 
+0

好一个!但我永远不会相信这些字段的顺序;) – ntziolis 2010-04-22 14:03:55

+2

如果在这样的查询中有任何应该使用“SELECT *”的地方......它会创建表的副本,而不必知道它里面的内容。 – 2010-04-22 14:08:10

+1

@Robin - 我同意a *在这里是个不错的选择,** if **字段的顺序是一样的;) – ntziolis 2010-04-22 14:10:42

7

要么你可以使用原始SQL:

INSERT INTO DEST_TABLE (Field1, Field2) 
SELECT Source_Field1, Source_Field2 
FROM SOURCE_TABLE 

或者使用向导:

  1. 右键点击数据库 - >任务 - >导出数据
  2. 选择源/目标数据库
  3. 选择源/目标表和 领域
  4. 将数据复制

然后执行:

TRUNCATE TABLE SOURCE_TABLE 
18
select * into x_history from your_table_here; 
truncate table your_table_here; 
+5

+1,这比选定的答案要好。 – 2010-04-22 17:18:40

+0

有关为什么您应该使用TRUNCATE而不是DELETE的更多信息,请参阅http://dba.stackexchange.com/questions/30325/delete-vs-truncate – user1069816 2015-06-24 10:34:37

2

试试这个一个命令就都删除和插入数据

DELETE MyTable 
    OUTPUT DELETED.Col1, DELETED.COl2,... 
     INTO MyBackupTable 

工作样本:

--set up the tables 
DECLARE @MyTable table (col1 int, col2 varchar(5)) 
DECLARE @MyBackupTable table (col1 int, col2 varchar(5)) 
INSERT INTO @MyTable VALUES (1,'A') 
INSERT INTO @MyTable VALUES (2,'B') 
INSERT INTO @MyTable VALUES (3,'C') 
INSERT INTO @MyTable VALUES (4,'D') 

--single command that does the delete and inserts 
DELETE @MyTable 
    OUTPUT DELETED.Col1, DELETED.COl2 
     INTO @MyBackupTable 

--show both tables final values 
select * from @MyTable 
select * from @MyBackupTable 

OUTPUT:

(1 row(s) affected) 

(1 row(s) affected) 

(1 row(s) affected) 

(1 row(s) affected) 

(4 row(s) affected) 
col1  col2 
----------- ----- 

(0 row(s) affected) 

col1  col2 
----------- ----- 
1   A 
2   B 
3   C 
4   D 

(4 row(s) affected) 
-2

这将工作:

select * into DestinationDatabase.dbo.[TableName1] from (
Select * from sourceDatabase.dbo.[TableName1])Temp 
相关问题