Счетчик подтверждений BULK INSERT в SQL Server 2005 - PullRequest
2 голосов
/ 12 июля 2011

Я использую BULK INSERT WITH BATCHSIZE OPTION. Как я могу получить зафиксированный счет, когда BULK INSERT не удается обработать. как:

BEGIN TRY
    BULK INSERT t1 FROM "C:\temp\temp.dat" WITH(BATCHSIZE=1000)
END TRY
BEGIN CATCH
    PRINT CONVERT(VARCHAR, @@rowcount)
END CATCH

@@rowcount вернул 0

1 Ответ

1 голос
/ 02 октября 2011

Вы можете сначала посчитать строки таблицы в переменную.

DECLARE @cntBefore bigint;
SELECT @cntBefore = COUNT(*) FROM t1;
BEGIN TRY
    BULK INSERT t1 FROM "C:\temp\temp.dat" WITH(BATCHSIZE=1000)
END TRY
BEGIN CATCH
    DECLARE @cntAfter bigint;
    SELECT @cntAfter = COUNT(*) FROM t1;
    PRINT 'Imported ' + CONVERT(VARCHAR, @cntAfter-@cntBefore)
END CATCH

В качестве альтернативы, используйте ROWS_PER_BATCH для оптимизации импорта, тогда все строки будут откатываться.

...