2016-05-13 130 views
-1

我想將數據從一個表移動到另一個表,但他們的表中包含數百萬條記錄,可能會被使用。將數據表從一個表移動到另一個數百萬條記錄

所以,我不想一次移動所有的數據,想到一個循環,我先移動幾行,然後移動其他幾行。

這樣表格不會被鎖定。

正常的查詢會是這樣的

INSERT INTO Table2 (<columns>) 
SELECT <columns> 
FROM Table1 
WHERE <condition>; 

DELETE FROM Table1 
WHERE <condition>; 

COMMIT; 

但是,任何人都可以提出,對數百萬行的,我怎麼能在一個循環格式移動幾行?

+0

還沒有嘗試過,但不會刪除頂部+輸出的工作? –

回答

0
Select 1; 
while (@@ROWCOUNT > 0) 
BEGIN 
Drop table #t; 
SELECT top(10) <columns> into #t FROM Table1 WHERE <condition>; 

INSERT INTO Table2 (<columns>) 
Select * from #t 

DELETE FROM Table1 WHERE idcol in(select idcol from #t); 
End 

試試這個查詢。它將一次插入10行。

相關問題