批量插入表中

时间:2014-03-12 11:51:18

标签: sql-server-2008 tsql sql-server-2008-r2

我有大桌子,需要定期周末移动数据。

我需要批量插入,我该怎么办..我尝试下面的代码,它继续循环。更快捷的方式使用。

-- CREATE TABLE tmptbl1 (ids int)
--------------------------------------
;WITH q (n) AS (
   SELECT 1
   UNION ALL
   SELECT n + 1
   FROM   q
   WHERE  n < 10000
)
INSERT INTO tmptbl1 
SELECT * FROM q
OPTION (MAXRECURSION 0)
--------------------------------------
-- CREATE TABLE tmptbl2 (ids int)

WHILE(1 = 1)
BEGIN
    INSERT INTO tmptbl2 (ids)
    SELECT TOP 1000 ids FROM tmptbl1
    IF (@@ROWCOUNT = 0)
        BREAK;
END

2 个答案:

答案 0 :(得分:0)

您可以尝试SELECT INTO

http://www.w3schools.com/sql/sql_select_into.asp

如果您使用的是MS SQL Server,则对非常大的表进行分区切换:

http://technet.microsoft.com/en-us/library/ms191160(v=sql.105).aspx

答案 1 :(得分:0)

试试这个:

declare @skip int = 0
WHILE(1 = 1)
BEGIN

    INSERT INTO tmptbl2 (ids)
    select top 1000 ids from tmptbl1 where ids not in(select top (@skip) ids from tmptbl1)
    IF (@@ROWCOUNT = 0)
        BREAK;
    select @skip=@skip+1000
END