INSERT INTO SELECT - 大量记录

时间:2012-03-30 08:34:05

标签: sql sql-server tsql insert

我想将记录插入TempTable。像这样:

insert into ##tempT
SELECT * FROM MyTable 

MyTable包含大量记录,因此“插入”需要很长时间。

如果我试图跑:

SELECT COUNT(*) FROM ##tempT

它始终返回“0”,直到INSERT INTO命令插入“MyTable”中的所有记录。

如何获得进度计数,告诉我## tempT中有多少记录?

我需要在SQL命令运行时更新进度条值。

谢谢。

3 个答案:

答案 0 :(得分:8)

尝试

set transaction isolation level read uncommitted
SELECT COUNT(*) FROM ##tempT

答案 1 :(得分:1)

您可以拆分查询。

x = number of records in MyTable / 100
i = 0

do until we're done
    queryString = "insert into ##tempT "
    queryString += "select top " + x " + " * FROM MyTable "
    queryString += "where RecordNumber > " + i

    Execute queryString
    Update Progress Bar
    i = i + x
loop

你会注意到你需要某种RecordNumber字段来完成这项工作。您可以通过多种方式进行搜索。

答案 2 :(得分:1)

使用存储过程并DECLARE变量COUNT并将其视为循环变量,每次完成插入时,将COUNT递增1,并在想知道计数时继续使用其他查询打印它。或者,返回此从程序中计算并将其读入您的程序以更新进度条。 :)