我在SQL Server 2008中使用bcp。
在某些文本文件中,数据类型中存在错误,因此我在输出结果中收到错误消息,但这不会引发catch块中的任何异常
样品:
set @cmd='BCP In'
declare @xpcmdResult int
EXEC @xpcmdResult=xp_cmdShell @cmd
@xpcmdResult
应根据bcp流程成功结果为o或1
答案 0 :(得分:2)
BCP不会以您期望的方式设置其返回代码。如果没有将返回码设置为1,BCP命令可能会有多种失败方式。
我发现检测BCP错误的最可靠方法是解析文本“错误”或“警告”的STDOUT,因为可以输出其中任何一个而不将返回码设置为1。
正如Pondlife所提到的,如果您可以选择使用BULK INSERT
,那么请使用它。
答案 1 :(得分:1)
为什么在BULK INSERT或OPENROWSET更容易时使用xp_cmdshell?然后你拥有TSQL中的所有东西,所以你应该能够捕获异常。您还应该查看general guidelines批量导入数据。
另一种方法是使用SSIS,但如果您只是导入单个文本文件,那可能会有点过分。