我必须将超过 100 万行从一个表复制到另一个表。因为我们有超过 50 个数据库需要更新,所以我使用一个小型 php 程序来启动每个数据库的事务。但是,当我只是在一个数据库上进行测试时,我注意到如果我使用“插入选择”语句,服务器只会复制大约 10000 行,然后突然停止?
我们正在对数据库进行大修,我们创建了一个包含多个更新和插入查询的事务来完成这项工作,事务中的所有其他查询都已完成。但批量插入不是???即使在批量插入之后仍然有一些其他的 tsql 操作??
我使用以下 tsql 脚本作为事务的一部分:
INSERT INTO [dbo].[tbl_SystemStatistics] ( 40 column)
SELECT 40 column
FROM [dbo].[tbl_SystemStatisticsOverhaul]
最佳答案
尝试这样的事情 -
SET NOCOUNT ON;
DECLARE
@x INT
, @count INT
SELECT
@count = COUNT(1)
, @x = 1
FROM dbo.tbl_SystemStatisticsOverhaul
IF EXISTS(
SELECT 1
FROM tempdb.dbo.sysobjects
WHERE ID = OBJECT_ID('tempdb..#import')
) DROP TABLE #import;
SELECT [column], RowNumber = ROW_NUMBER() OVER (ORDER BY id)
INTO #import
FROM dbo.tbl_SystemStatisticsOverhaul
WHILE @x < @count BEGIN
INSERT INTO dbo.tbl_SystemStatistics ([column])
SELECT [column]
FROM #import
WHERE RowNumber BETWEEN @x AND @x + 9
SELECT @x = @x + 10
END
关于sql - 复制,将大量行插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16227392/