在bcp实用程序中,当导入/导出时,命令行将显示我们复制的行数。 我尝试在另一个处理中使用该号码,但我不能。 命令行是:
bcp AdventureWorks2012.HumanResources.Department out D:\Department_Test.txt -S SERVER_NAME -T -c
结果:
Starting Copy...
16 rows copied.
....
请帮我复制行号。
我尝试在命令行中使用FINDSTR查找复制的行,可以解决这个问题,但我想找到更好的解决方案。
由于
答案 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