前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一次性获取多个oracle序列的值,实现关联表多数据的批量insert

一次性获取多个oracle序列的值,实现关联表多数据的批量insert

作者头像
微风-- 轻许--
发布2022-04-13 09:59:22
9340
发布2022-04-13 09:59:22
举报
文章被收录于专栏:java 微风

业务 要求批量导入不小于10W条数据到 user 表,但是user表在 insert 每条数据的同时要 insert 一条对应数据到 customer表,

并且是以 customer 表的主键作为 user 表的外键。

所以想到要一次性获取多个 序列值,再把对应的序列给不同表,并分别作为两个表的主键和外键的值。

方法很简单 就一句代码 :

代码语言:javascript
复制
	String squence ="select USR_CUSTOMER_SEQ.nextval cust_id from (select 1 from all_objects where rownum <= "+usrlist.size()+")";
      			List<String> squenceList = BatchInsert.selectSql(squence);"select USR_CUSTOMER_SEQ.nextval cust_id from (select 1 from all_objects where rownum <= "+usrlist.size()+")";
      			List<String> squenceList = BatchInsert.selectSql(squence);

usrlist 是解析表格后得到的要导入的 user数据 集合,有多少条数据就取多少个序列值。

selectSql 方法 只是JDBC连接数据库 执行了这句SQL 并返回了查到的 序列值,拿到这个序列集合就可以根据业务作后续实现了。

代码语言:javascript
复制
  // 单纯查询 
     public static List<String> selectSql(String sql){
        Connection conn = null;//定义为空值
        Statement stmt = null;
        ResultSet rs = null;
        conn = getConnection();
        List<String> list = new ArrayList<String>();
        try {
         stmt = conn.createStatement();//创建一个Statement语句对象
         rs = stmt.executeQuery(sql);//执行sql语句
         while(rs.next()){
        		 list.add(rs.getString("cust_id"));
         }
     } catch (SQLException e) {
         e.printStackTrace();
     }finally{
    	 try {
			conn.close();
			stmt.cancel();
	    	rs.close();
		 }catch (SQLException e) {
			e.printStackTrace();
		 }
     }
	 return list;
   }

getConnection 方法是获取数据库连接:

代码语言:javascript
复制
   public static Connection getConnection(){ //连接数据库的方法        
    	
        try {    
            Class.forName("oracle.jdbc.driver.OracleDriver"); //初始化驱动包         
            conn = DriverManager.getConnection(url, user, password);    
        } catch (Exception e) {    
            e.printStackTrace();    
        }  
        return conn;
    } 

另 批量导入实现见博文:关联表多数据的批量insert (批量导入,测试10W条数据用时46秒)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/07/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档