我需要更新一个有大约500万行的表。 因此,为此我想在java中创建批处理语句并作为批量操作进行更新。
Righht现在我有100个批次并且它工作正常。但是当我增加批次数超过100时我得到一个例外:com.sybase.jdbc2.jdbc.SybBatchUpdateException:JZ0BE:BatchUpdateException:执行批处理语句时出错:消息为空。
如何在CallableStatement对象中拥有更多批处理语句。
答案 0 :(得分:1)
没有足够的声誉来发表评论......但是你批处理的是什么类型的声明?你更新了多少行?表有主键吗?表中有多少列,以及您更新了多少列?
通用答案: sybase中的JDBC框架非常快。您至少可以考虑编写一个简单的过程来接收您用来标识行的主键(或其他)信息,以及将更新为行的新值作为输入变量。此过程仅更新单行。
将此过程包装在自己的java方法中,该方法处理callablestatement,注册你的错误号和错误消息参数等。
然后你可以遍历你现在使用的任何构造来更新数据,并使用相同的java方法来调用过程来逐行更新值。
同样,我不知道你要做的事情的数量......但是我知道你是否想要进行单行更新,这将非常快。