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