jdbc批量插入数据(同时处理数据重复)
2015-05-11 00:00
495 查看
摘要: 通过jdbc的executeBatch来进行批量的数据插入操作。并在插入过程中同时处理数据的重复问题(主键,唯一约束等等)
使用executeBatch方式进行批量插入的关键在于设置setAutoCommit为false,然后再最后进行一次手动事务提交。
上面的这种方式在对于对数据的重复性没有要求时就已经足够使用了。如果需要忽略重复的数据时,则将sql语句改为
使用insert ignor 可以忽略掉重复的数据。如果希望更新重复的数据,则可以使用
insert ON DUPLICATE KEY UPDATE 可以在数据重复时进行更新。
title=values(title)的意思是将旧记录的title更新为新纪录的title。
private static boolean insert(List<SpPage> list) { Connection connection = getConnection(); if (null == connection) { System.err.println("数据库连接失败"); } try { String sql = "INSERT INTO sp_page_test (title, web_site, type, url, status) VALUES (?, ?, ?, ?, ?)" ; PreparedStatement prest = connection .prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); connection.setAutoCommit(false); for (int x = 0; x < list.size(); x++) { SpPage sp = list.get(x); prest.setString(1, sp.getTitle()); prest.setString(2, sp.getWebSite()); prest.setString(3, sp.getType()); prest.setString(4, sp.getUrl()); prest.setString(5, sp.getStatus()); prest.addBatch(); } prest.executeBatch(); connection.commit(); connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } return true; }
使用executeBatch方式进行批量插入的关键在于设置setAutoCommit为false,然后再最后进行一次手动事务提交。
上面的这种方式在对于对数据的重复性没有要求时就已经足够使用了。如果需要忽略重复的数据时,则将sql语句改为
String sql = "INSERT ignore INTO sp_page_test (title, web_site, type, url, status) VALUES (?, ?, ?, ?, ?)" ;
使用insert ignor 可以忽略掉重复的数据。如果希望更新重复的数据,则可以使用
String sql = "INSERT INTO sp_page_test (title, web_site, type, url, status) VALUES (?, ?, ?, ?, ?)" + "ON DUPLICATE KEY UPDATE title=values(title)"
insert ON DUPLICATE KEY UPDATE 可以在数据重复时进行更新。
title=values(title)的意思是将旧记录的title更新为新纪录的title。
相关文章推荐
- 数据库表中插入重复数据的处理
- sql :将一张表的数据插入到另一张表中同时要消除重复的数据
- 数据库表中插入重复数据的处理
- 数据库表中插入重复数据的处理
- mybatis 插入数据时候 同时得到主键的id 处理好一起插入别的字段
- sqlite避免重复插入数据以及插入同时又可更新已有的数据
- 删除一个表中的重复数据同时保留第一次插入那一条以及sql优化
- oracle处理重复插入数据
- mysql 插入数据 重复行处理
- 删除一个表中的重复数据同时保留第一次插入那一条以及sql优化
- mybatis 插入数据时候 同时得到主键的id 处理好一起插入别的字段
- 向表中插入数据的时候,自动删除重复的数据
- MYSQL与Oracle如何处理重复数据的SQL
- Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件
- Sql Server 插入数据的同时返回插入数据的ID/主键信息
- Vue.js之在数组中插入重复数据
- MYSQL INSERT INTO SELECT 不插入重复数据
- java多线程处理导入数据拆分List集合,同步处理插入数据
- 同时向SQL数据库插入多行数据
- t-sql go 重复执行sql 语句 重复插入数据