中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-07 03:49
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » BCP IN 主键重复 怎样作错误处理? 查看 1,387 回复 8
楼 主 BCP IN 主键重复 怎样作错误处理? 发表于 2008-01-08 13:39 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
18年会员
UID 107722
性别 男
来自 烟台
状态 离线
@echo off
echo _______BEGIN______>>test.txt
bcp "fee.dbo.Slip" in "Slip.dat" -S. -Usa -P -n -E
if errorlevel 1 goto :error

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 (很让我失望)
路 是自己选的
学习 是为了具备解决问题的能力
2 发表于 2008-01-08 13:43 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
18年会员
UID 107722
性别 男
来自 烟台
状态 离线
不好意思
bcp "fee.dbo.Slip" in "Slip.dat" -S. -Usa -P -n -E
if errorlevel 1 goto :error

没有
我想突出重点,加粗一下
路 是自己选的
学习 是为了具备解决问题的能力
3 发表于 2008-01-08 14:17 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
当主键重复时,BCP会有错误提示或者错误日志文件生成吗?

如果有其一,可以捕捉错误再来判断。
4 发表于 2008-01-08 16:03 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
18年会员
UID 107722
性别 男
来自 烟台
状态 离线
有错误提示或者错误日志文件生成
但是我不会写捕捉错误的代码
路 是自己选的
学习 是为了具备解决问题的能力
5 发表于 2008-01-08 16:44 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
18年会员
UID 107722
性别 男
来自 烟台
状态 离线
能不能给点提示或有时间的时候帮忙写一个
谢谢
路 是自己选的
学习 是为了具备解决问题的能力
6 发表于 2008-01-08 18:00 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
把bcp命令放在for /f的括号里面,再来用findstr查找,找到就goto就可以了。
7 发表于 2008-01-09 12:51 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
18年会员
UID 107722
性别 男
来自 烟台
状态 离线
现在有一个test.txt的文件
文件中有“SQLState = 23000, NativeError = 2627”字符串

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

请问
lxmxn
在这种情况下,应该怎样写呢?
谢谢
路 是自己选的
学习 是为了具备解决问题的能力
8 发表于 2008-01-09 17:44 ·  中国 福建 泉州 石狮市
银牌会员
★★★
积分 1,276
发帖 469
注册 2002-12-23 13:00
23年会员
UID 586
性别 男
来自 福建泉州
状态 离线
bcp语句后面加find 查找错误代码找到就跳
比如错误代码的特性是error
bcp "fee.dbo.Slip" in "Slip.dat" -S. -Usa -P -n -E|find /i "error"&&goto :error
QQ:366840202
http://chenall.net
9 发表于 2008-01-09 18:45 ·  中国 山东 烟台 联通
中级用户
★★
积分 257
发帖 123
注册 2008-01-05 11:08
18年会员
UID 107722
性别 男
来自 烟台
状态 离线
谢谢
路 是自己选的
学习 是为了具备解决问题的能力
论坛跳转: