SQL Server 2005 BULK INSERT的承诺计数

时间:2011-07-12 07:09:58

标签: sql-server-2005 insert bulk

我使用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 个答案:

答案 0 :(得分:1)

您可以先将表行计入变量。

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优化导入,然后回滚所有行。