2013-04-26 3 views
2

Мне нужно скопировать более 1 миллиона строк из одного стола в другой. Поскольку у нас есть более 50 баз данных для обновления, я использую небольшую программу php для инициирования транзакции на базу данных. Но пока я просто тестирую на одной базе данных, я замечаю, что если я использую оператор «Вставить в выбор», сервер будет копировать только около 10000 строк, а затем внезапно останавливается?Копирование, вставка большого количества строк в таблицу

Мы делаем капитальный ремонт базы данных, и мы создали транзакцию с несколькими запросами обновления и вставки для выполнения задания, все остальные запросы в транзакции завершены. но объемная вставка не ??? Даже если после объемной вставки все еще есть некоторые другие действия tsql?

Я использую следующий TSQL сценарий как часть сделки:

INSERT INTO [dbo].[tbl_SystemStatistics] (40 column) 
SELECT 40 column 
FROM [dbo].[tbl_SystemStatisticsOverhaul] 
+0

Как вы знаете, он остановился на 10000? – Paparazzi

+0

Похоже, вам нужно разбить свои запросы. – Kermit

+0

Я знаю его около 10000 записей, как я вижу в таблице, где я переезжаю. –

ответ

1

попробовать что-то вроде этого -

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 
1

Ваш max_execution_time в PHP достичь? Думаю, по умолчанию 30 секунд. http://php.net/manual/en/function.set-time-limit.php

+0

Я уже увеличил время выполнения до 500. Я думаю, что в SQL должно быть какое-то ограничение! Я имею в виду, что выполняется полная трансация. и здесь у нас около 20 различных заявлений. Только вставка из этой таблицы не завершена: s –