java 怎么把5万条数据分批插入数据到mysql,之前插1,2万没事, 多了就内存溢出

java 怎么把5万条数据分批插入数据到mysql,之前插1,2万没事, 多了就内存溢出,第1张

你的事务控制问题。

大量数据插入的时候,可以将数据量分批,每次事务提交一批。

例如:

con.setAutoCommit(false)// 更改JDBC事务的默认提交方式

Statement stmt = conn.createStatement()

// 第一批 省略n条

stmt.addBatch("insert into dept values (52,'a','aa')")

stmt.addBatch("insert into dept values (53,'b','bb')")

stmt.addBatch("insert into dept values (54,'c','cc')")

stmt.executeBatch()

con.commit()//提交JDBC事务

stmt.close()

// 第二批 省略n条

stmt = conn.createStatement()

stmt.addBatch("insert into dept values (52,'a','aa')")

stmt.addBatch("insert into dept values (53,'b','bb')")

stmt.addBatch("insert into dept values (54,'c','cc')")

stmt.executeBatch()

con.commit()//提交JDBC事务

stmt.close()

// 第n批

。。。。。。

con.setAutoCommit(true)// 恢复JDBC事务的默认提交方式

conn.close()

通过字符流把一次性把所有数据读出来.

把数据split("|")后 放到一个数组里 下标为n%3==0的为第一种类型的数据 为1的是第二种类型 ... ...

在连接数据库把数组里的数据insert到数据库里 就用原始的jdbc插入就很快了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9765628.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存