开发者社区> 问答> 正文

java执行批处理,如果有一条数据报错怎么确定是那条错误数据 ?报错

我想把oracle中的数据全部导进其他的数据库,现在由于数据量过大,所以我选择了批处理,但是如果有一条数据报错,那么全部数据都不能执行成功,而且commit后直接
报错了循环也中断了,请问我该怎么处理
本人菜鸟,求各位大佬帮助
![图片说明](https://img-ask.csdn.net/upload/201801/25/1516874379_459570.png)图片说明

展开
收起
爱吃鱼的程序员 2020-06-23 00:05:50 684 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    你下面不是有logger.info这行代码这是可以捕捉到异常的,看异常一点一点分析吧。

    “如果有一条数据报错,那么全部数据都不能执行成功”,这个可以用oracle事务。

    java倒是不大了解,应该可以根据oracle返回值判断事务是否执行成功,然后中断吧。

    你看看报错信息,应该会有相关的SQL语句信息在里面,然后你再去找对应的SQL了。

    查看日志文件,找对应的错误

    报错之前打印出来。或者存在局部变量中,catch异常之后,把这个局部变量的值打印出来。
    例如:

    Strings=null;
    try
    {
    x=next-data();
    xxxxx
    其他处理代码。
    xxxx

    }catch(Exceptione){
    这里打印s即可。
    }

    你这里应该可以只记录索引i。异常时打印出来。

    事务的特性,你虽然1000条执行一次,但是没有提交,如果有一条报错肯定都回滚了,你可以1000条执行一次,然后马上提交,这样如果一个批次出现异常,那么只会影响
    这1000条,这1000条会回滚,然后查看后台日志,看看具体是哪一条


    这是我打印的SQL。
    我是想把所有的数据导进新的库中,其中我还要对数据进行相应的改变,所以需要写这个程序。
    其次我要执行的任务是晚上下班时,将程序跑起来,然后第二天所有程序导进新的数据库,然后错误的数据能够打印到日志里面。

    可以程序验证数据有效性,有误的log、跳过。

    有人给我说过可以自定义异常,这样只要能定到是那条数据有错了,能拿到错误的Object数组就好处理了,所以想问问,到底该怎么做

    2020-06-23 00:06:09
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载