文章目录

  • 1. 表结构
  • 2. 批量删除
  • 3. 批量插入
  • 4. 批量删除和插入
  • 5. 实体类
  • 6. main
1. 表结构
-- Create table
create table HERO
(SNO       VARCHAR2(20) not null,USER_NAME VARCHAR2(20),AGE       NUMBER(30)
);comment on table HERO is '英雄信息表';comment on column HERO.SNO is '英雄编码';
comment on column HERO.USER_NAME is '英雄名称';
comment on column HERO.AGE is '英雄年龄';alter table HERO add primary key (SNO);
2. 批量删除
/*** 批量删除** @param heroList 数据即可* @param url      数据库url* @param user     数据库用户名* @param password 数据库密码* @throws SQLException*/public static void batchDel(List<HERO> heroList, String url, String user, String password, String cleansql) throws SQLException {//开始时间long start = System.currentTimeMillis();PreparedStatement clean = null;Connection conn = null;try {//数据连接conn = DriverManager.getConnection(url, user, password);//设置手动提交conn.setAutoCommit(false);//计数器int count = 1;clean = null;// 批量插入时ps对象必须放到for循环外面clean = conn.prepareStatement(cleansql);//把数据集合依次遍历for (HERO hero : heroList) {clean.setString(1, hero.getSNO());clean.addBatch();// 每1000条一批次记录插入一次if (count % 1000 == 0) {clean.executeBatch();conn.commit();clean.clearBatch();}}// 最后一批次剩余数量不足1000clean.executeBatch();conn.commit();} catch (SQLException e) {conn.rollback();e.printStackTrace();} finally {clean.clearBatch();}long end = System.currentTimeMillis();System.out.println(end - start);}
3. 批量插入
/*** 批量插入** @param heroList* @param url* @param user* @param password* @param sql*/public static void batchInsert(List<HERO> heroList, String url, String user, String password, String sql) throws SQLException {Connection conn = null;long begin = 0;long end = 0;try {conn = DriverManager.getConnection(url, user, password);conn.setAutoCommit(false);PreparedStatement pstmt = conn.prepareStatement(sql);for (HERO u : heroList) {pstmt.setString(1, u.getSNO());pstmt.setString(2, u.getUSER_NAME());pstmt.setInt(3, u.getAGE());pstmt.addBatch();}begin = System.currentTimeMillis();pstmt.executeBatch();conn.commit();} catch (SQLException e) {conn.rollback();e.printStackTrace();} finally {end = System.currentTimeMillis();conn.close();}logger.info("使用原生jdbc插入1000万条数据总耗时:{}", end - begin);}
4. 批量删除和插入
 /*** 批量删除和插入** @param heroList 数据即可* @param url      数据库url* @param user     数据库用户名* @param password 数据库密码* @throws SQLException*/public static void batchDelAndInsert(List<HERO> heroList, String url, String user, String password, String cleansql, String sql) throws SQLException {//开始时间long start = System.currentTimeMillis();//数据连接Connection conn = DriverManager.getConnection(url, user, password);//设置手动提交conn.setAutoCommit(false);//计数器int count = 1;PreparedStatement ps = null;PreparedStatement clean = null;// 批量插入时ps对象必须放到for循环外面clean = conn.prepareStatement(cleansql);ps = conn.prepareStatement(sql);//把数据集合依次遍历for (HERO hero : heroList) {clean.setString(1, hero.getSNO());ps.setString(1, hero.getSNO());ps.setString(2, hero.getUSER_NAME());ps.setInt(3, hero.getAGE());clean.addBatch();ps.addBatch();// 每1000条一批次记录插入一次if (count % 1000 == 0) {clean.executeBatch();ps.executeBatch();conn.commit();clean.clearBatch();ps.clearBatch();}}// 最后一批次剩余数量不足1000clean.executeBatch();ps.executeBatch();conn.commit();clean.clearBatch();ps.clearBatch();long end = System.currentTimeMillis();System.out.println(end - start);}
5. 实体类
package com.sinosoft.cmiip.modular.insurance.test;import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;@Data
public class HERO {@TableId(value = "SNO")private String SNO;@TableField("USER_NAME")private String USER_NAME;@TableField("AGE")private int AGE;
}
6. main
 public static void main(String[] args) throws SQLException {String url = "jdbc:oracle:thin:@ip地址:1521:lisdb";String user = "dca";String password = "dca";// 模拟1000万个用户List<HERO> heroList = generateHero(1000000);logger.info("生成用户记录总数:{}", heroList.size());// 测试1 批量删除和插入//删除sqlString cleansql = "delete HERO family where SNO = ?";//插入sqlString sql = "insert into HERO(SNO,USER_NAME,AGE) values (?,?,?)";batchDelAndInsert(heroList, url, user, password, cleansql, sql);// 测试2 批量删除batchDel(heroList, url, user, password, cleansql);// 测试3 批量插入batchInsert(heroList, url, user, password, sql);}

ORACLE JDBC 对千万数据 批量删除和批量插入相关推荐

  1. dbc批量插入、批量删除、批量更新

    dbc批量插入.批量删除.批量更新 (2010-06-02 16:25:03) 转载▼ 标签: it   一.JDBC的批量插入 JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下 ...

  2. mysql jdbc驱动 批量更新_jdbc-批量插入、批量删除、批量更新

    一.JDBC的批量插入 JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等. 我用Mysql5.1.5的JDBC driver 分别对三种比较常用的方法做了测试 方法一,使用P ...

  3. jdbc批量插入、批量删除、批量更新

    谨记:字符串拼接的时候一定要用引号引起来. 技巧:当jdbc处理sql语句时提示错误,可以将执行的sql语句打印出来,然后再在数据库中执行,从而解决错误. 一.JDBC的批量插入 JDBC批量插入主要 ...

  4. java批量导入和批量删除_MyBatis批量添加、修改和删除

    废话不多说了,直接步入正题了. 1.批量添加元素session.insert(String string,Object o) public void batchInsertStudent(){ Lis ...

  5. python批量删除_Python批量删除只保留最近几天table的代码实例

    Python批量删除table,只保留最近几天的table 代码如下: #!/usr/bin/python3 """ 批量删除table,只保留最近几天的table &q ...

  6. 【Web_UI自动化_Python3_豆瓣批量删帖_seleniumtqdm】登录豆瓣-进入详情-批量删除留言-批量删除帖子_20201130

    #!/usr/bin/env/python3 # -*- coding:utf-8 -*- ''' Author:leo Date&Time:2020/11/20 11:11 Project: ...

  7. HTML批量删除标记,批量删除LabelImg制作的.xml中的部分标签值(删除.xml的节点值)...

    概述 自己在用labelImg打好标签后,想只用其中几类训练,不想训练全部类别,又不想重新打标生成.xml文件,因此想到这个办法:直接在.xml文件中删除原有的不需要的标签类及其属性. 打标时标签名出 ...

  8. 批量删除引用#批量删除交叉引用

    批量删除引用 原文如下: 批量删除引用操作 1)ctr+H进行替换操作 2)特殊格式选中"尾注标记" 3)然后被替换的内容就会变^e 4)全部替换后如图 批量删除交叉引用 如上图还 ...

  9. php mysql批量删除_php批量删除操作代码分享

    批量删除多条记录,对于比较多的信息,如果没有批量删除功能是非常麻烦的. 1.从数据库中拿一张表过来,写个复选框进行选择 可以加全选复选框 连接数据库什么的都不写啦 代码: 编号 姓名 电话 分组 操作 ...

最新文章

  1. Tensorflow【实战Google深度学习框架】用卷积神经网络打造图片识别应用
  2. android glide的历史,Android 图片加载的那些事:为什么你的Glide 缓存没有起作用?...
  3. [译]GC专家系列2:Java 垃圾回收的监控
  4. [react] react中的key有什么作用?
  5. 解决 idea 运行 Spring Boot 项目启动慢的问题
  6. MyBatisPlus_查询篇_入门试炼_01
  7. 漫步数学分析番外五(上)
  8. 【设计模式】第一章 面向对象六大原则
  9. Visio2013 64位下载安装以及破解激活教程
  10. 三菱FX5U,机床X轴Y轴工作台定位控制程序!使用三菱J4-A系列伺服驱动器绝对位置系统,程序大小27000多步
  11. hive插入多条数据sql_HIVE sql使用总结
  12. vue 的酒店⺠宿⽹站毕业设计源码250910
  13. 微信小程序开发项目源代码_SSM项目汽车租赁平台+后台管理系统
  14. Apache安装和配置详细
  15. node.js中公培训笔记大全(讲的一般,小白基础入门)
  16. Cocos2d-动作(Action)详解
  17. 编译android kernel遇到的问题
  18. signature=2de078bcab8d9bebbe2dbc92c930a7ec,Storage device assisted data de-duplication
  19. ubuntu16.04安装wechat
  20. 论这场云盘大战,以及各网盘的优劣

热门文章

  1. 投入10个亿,每人奖300万,腾讯给科学界发奖了!
  2. 盘点世界上的巨无霸发电机
  3. 不会演讲的你,一开口就输了!
  4. 代价敏感多标签主动学习的代码开发跟踪
  5. 【转载保存】mysql不设置主键使用自增长ID方法
  6. vue.js安装与配置
  7. C/C++中字符串与数字相互转换
  8. HDU 1495(非常可乐)
  9. 作业帮云原生降本增效实践之路
  10. 开放下载!《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》