2010-04-22 31 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 
相關問題