我可以用批处理替换一系列数据库操作

时间:2015-07-30 18:22:48

标签: java database

我已经检查了几个executeBatch的例子,但似乎我们只能批量添加一种语句。但我手头有一个问题,我需要执行2个更新查询,然后执行一个插入查询。有没有办法批量生产。

我必须从一组XML文件中解析大约100,000条记录,并为每条记录更新我的数据库。每条记录都包含一个要插入DB的日期范围。例如,如果我在DB

中有以下2条记录
 Record A - range of 1st Jan 2000 to 31st Dec 2010 
 Record B - range of 1st Jan 2011 to 31st Dec 2020

现在,如果新记录来自以下范围

 Record N - range of 1st Jan 2005 to 31st Jan 2014

要添加此记录,我需要执行以下2个更新查询和一个插入查询

 Update end date of Record A to 31st Jan 2004
 Update start date of Record B to 1st Jan 2015
 Insert record N

我想知道我是否可以进行批量执行2更新和1次插入然后移动到下一条记录等等。

我可以使用单独的批次进行插入和更新,但是假设要对尚未插入的记录进行更新,反之亦然,我会遇到问题。所以顺序很重要。谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

不可能进行异源配料。

如果你正在使用Prepared Statements(你应该这样做),那么异步批处理是不可能的,因为PS创建会在更新时试图绑定你的变量而变得混乱,它不会工作。但是,您可以编写一个带

的存储过程

([RecordIds to update], endupdate, startupdate, startinsert, endinsert ,[other_details])

作为参数。然后,在检查条件后,使用相应的值

执行您的程序
RecordAid, endupdate, RecordBid, startupdate, RecordNid, startinsert, endinsert

注意:这将消除批处理的优点。它将与执行两个更新然后插入一样好。我宁愿建议将更新一起批处理并单独运行插入。