BCP 退出,代码为 0

问题描述 投票:0回答:2

当从我的 Java 应用程序运行 BCP 时,它会以状态代码 0 退出,而预期状态代码为 1。 我使用无效的数据和格式化文件组合运行 bcp,并且 bcp 给出以下错误:

Starting copy...
SQLState = 22005, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]Invalid character value for cast  specification

BCP copy in failed

BCP 然而退出时退出代码为 0 而不是 1,正如我怀疑的那样。现在,要查看运行 BCP 时是否出现故障非常困难。一旦正确的代码匹配到一定程度(例如相同的分隔符),就可以使用正确的代码退出。

命令

PS C:\Users\feh\Desktop> bcp integrate_test.dbo.AS_LOADER_DELIMITED in .\data.dat -S "10.0.0.161\SQL2K5,1048" -U user -P pass -f .\formatting.ctl -m 1

Starting copy...
SQLState = S1000, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]Unexpected EOF encountered in BCP data-file

0 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 1
PS C:\Users\feh\Desktop> $lastexitcode
0

如何验证数据的格式化文件并在它们不匹配时获取退出代码 1?

java sql-server command-line bcp
2个回答
0
投票

如果 bcp 位于“in”,请考虑使用 BULK INSERT。这与 bcp 的作用相同,但可以使用 SQL Server TRY/CATCH 或正常异常处理来捕获

否则,你是在捕获

%ERRORLEVEL%
而不是其他代码吗?


0
投票

在 SQL 命令中,添加

SETLOCAL ENABLEDELAYEDEXPANSION;
,然后将设置 errorlevel 环境变量。

© www.soinside.com 2019 - 2024. All rights reserved.