Board logo

标题: BCP IN 主键重复 怎样作错误处理? [打印本页]

作者: zyz0304360     时间: 2008-1-8 13:39    标题: BCP IN 主键重复 怎样作错误处理?


@echo off
echo _______BEGIN______>>test.txt
[b]bcp "fee.dbo.Slip" in "Slip.dat" -S. -Usa -P  -n  -E
if errorlevel 1 goto :error[/b]
goto :end
:error
date /T >>test.txt
time /T >>test.txt
there is an error >>test.txt
goto:end
:end
echo _______END______>>test.txt
在BCP IN 出现主键重复这个错误时,怎么才能让能让批处理跳到:error这里?

注:
1.无论BCP IN成功或失败 errorlevel 都是0(echo %errorlevel%)
2.我试过在BCP IN 加 -e 参数(-e errfile.dat),然后用IF EXIST errfile.dat goto :error 但是每次执行BCP IN都生成errfile.dat (很让我失望)
作者: zyz0304360     时间: 2008-1-8 13:43
不好意思
bcp "fee.dbo.Slip" in "Slip.dat" -S. -Usa -P  -n  -E
if errorlevel 1 goto :error

没有
我想突出重点,加粗一下
作者: lxmxn     时间: 2008-1-8 14:17
当主键重复时,BCP会有错误提示或者错误日志文件生成吗?

如果有其一,可以捕捉错误再来判断。
作者: zyz0304360     时间: 2008-1-8 16:03
有错误提示或者错误日志文件生成
但是我不会写捕捉错误的代码
作者: zyz0304360     时间: 2008-1-8 16:44
能不能给点提示或有时间的时候帮忙写一个
谢谢
作者: lxmxn     时间: 2008-1-8 18:00
把bcp命令放在for /f的括号里面,再来用findstr查找,找到就goto就可以了。
作者: zyz0304360     时间: 2008-1-9 12:51
现在有一个test.txt的文件
文件中有“SQLState = 23000, NativeError = 2627”字符串

我现在是DOS初学阶段,只能看懂一些简单的
目前还不会写

请问  
lxmxn
在这种情况下,应该怎样写呢?
谢谢
作者: chenall     时间: 2008-1-9 17:44
bcp语句后面加find 查找错误代码找到就跳
比如错误代码的特性是error
bcp "fee.dbo.Slip" in "Slip.dat" -S. -Usa -P  -n  -E|find /i "error"&&goto :error
作者: zyz0304360     时间: 2008-1-9 18:45
谢谢