BCP实用程序:如何获取导入的记录数

时间:2014-09-11 07:29:18

标签: sql-server bcp

在bcp实用程序中,当导入/导出时,命令行将显示我们复制的行数。 我尝试在另一个处理中使用该号码,但我不能。 命令行是:

bcp AdventureWorks2012.HumanResources.Department out D:\Department_Test.txt -S SERVER_NAME -T -c

结果:

Starting Copy...
16 rows copied. 
....

请帮我复制行号。

我尝试在命令行中使用FINDSTR查找复制的行,可以解决这个问题,但我想找到更好的解决方案。

由于

2 个答案:

答案 0 :(得分:1)

这是一个黑客攻击。

DECLARE @output TABLE (id INT IDENTITY, command NVARCHAR(256))

Declare @sql varchar(8000)='bcp AdventureWorks2012.HumanResources.Department out D:\Department_Test.txt -S SERVER_NAME -T -c'

INSERT INTO @output
exec master..xp_cmdshell  @sql

SELECT cast(Replace(command,' rows copied.','') as int) FROM @output where command like '% rows copied.' 

答案 1 :(得分:0)

考虑到这一点:

bcp AdventureWorks2012.HumanResources.Department out D:\Department_Test.txt -S SERVER_NAME -T -c

你正在追逐整个表格,因此你可以尝试

bcp "SELECT count(*) FROM AdventureWorks2012.HumanResources.Department" queryout D:\Department_Rows.txt -S SERVER_NAME -T -c

这会将表中的记录数输出到单独的txt文件中。

或者 - 可能更好 - 您可以使用BCPROWCOUNT

  

(返回受当前(或最后一次)BCP操作影响的行数。)

您可以阅读here