将数据表从一个表移动到另一个数百万条记录
问题描述:
我想将数据从一个表移动到另一个表,但他们的表中包含数百万条记录,可能会被使用。将数据表从一个表移动到另一个数百万条记录
所以,我不想一次移动所有的数据,想到一个循环,我先移动几行,然后移动其他几行。
这样表格不会被锁定。
正常的查询会是这样的
INSERT INTO Table2 (<columns>)
SELECT <columns>
FROM Table1
WHERE <condition>;
DELETE FROM Table1
WHERE <condition>;
COMMIT;
但是,任何人都可以提出,对数百万行的,我怎么能在一个循环格式移动几行?
答
我建议你阅读这篇文章http://sqlserverplanet.com/data-warehouse/transferring-large-amounts-of-data-using-batch-inserts 他们正在使用while循环,请花些时间阅读评论。祝你好运!
答
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行。
还没有尝试过,但不会删除顶部+输出的工作? –