oracle 批量插入去重复,jdbc批量插入数据(同时处理数据重复)

private static boolean insert(List 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 

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值