如何用java jdbc 向数据库表插入大数据量

来源:互联网 发布:单片机一秒延迟怎么写 编辑:程序博客网 时间:2024/05/22 04:38
jvm:-Xmx1024m
size = 1000000,可以插入成功。

如果再为size增大一个数量级,还是OutOfMemoryError,这时内存已经不好再增加分配了
批量处理本来是为了提高性能,但是太大的数据提交,因为堆的膨胀,堆的寻址会造成性能反而下降。
PreparedStatement加executeBatch方法可以更快,主要想提高预编译sql文件的次数,从而达到提高效率。
如果是为了事务处理,不妨用个变通的办法,建立临时表,导入数据,还是可以用到addBatch,比如每100条一个批次。

然后在另外一张表有个记录,记录是否全部导入成功的标志。

基本思路是利用两段提交理论
------------------------------
public class App {public static void main(String[] args) throws Exception {Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "marshal", "password");PreparedStatement preparedStatement = connection.prepareStatement("insert into addbatch_test(id,name) values(?,?)");int size = 1000000;for (int i = 0; i < size; i++) {preparedStatement.setInt(1, i);preparedStatement.setString(2, "n" + i);preparedStatement.addBatch();}preparedStatement.executeBatch();preparedStatement.close();connection.close();}}
原创粉丝点击