前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

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

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

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

方法很简单  就一句代码 :

 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 并返回了查到的 序列值,拿到这个序列集合就可以根据业务作后续实现了。

  // 单纯查询 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 方法是获取数据库连接:

   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秒)

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

  1. oracle通过值查字段,Oracle 中 根据值 查询 所在 表和字段

    -------------------- -- 这里是查询 数字型字段值 /*declare CURSOR cur_query IS select table_name, column_name, d ...

  2. ORACLE 通过数据值查找找表名和字段名

    有时候,我们只知道数据值,但需要通过这个数据值去查找数据是存放在哪个表的哪个字段. DECLARE V_SQL VARCHAR2(2000); V_COUNT NUMBER; BEGIN FOR I ...

  3. oracle定义递减序列步长值,浅谈Oracle序列

    Oracle是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一,而序列是一个计数器,它并不会与特定的表关联,通过创建Oracle序列和触发器实现表的主键自增. 序列一 ...

  4. Oracle序列使用:建立、删除

    在开始讲解Oracle序列使用方法之前,先加一点关于Oracle client sqlplus的使用,就是如果执行多行语句的话一定要加"/"才能表示结束,并执行!本篇文章的主题是通 ...

  5. oracle+创建序列自增,oracle序列详解和建立自增主键

    序列: 是oacle提供的用于产生一系列惟一数字的数据库对象.sql l 自动提供惟一的数值数据库 l 共享对象性能 l 主要用于提供主键值测试 l 将序列值装入内存能够提升访问效率spa 1.首先建 ...

  6. Oracle序列小结

    定义: 序列是一个计数器(序列号生成器),可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字),是oracle提供的用于产生一系列唯一数字的数据库对象.通过创建oracle序列和触发器来实 ...

  7. oracle sql序列,SQL server 和Oracle 序列

    1,SQL Server序列创建与使用 BEGIN IF EXISTS (SELECT * FROM sysobjects WHERE name = 'event_seq') DROP SEQUENC ...

  8. oracle 序列详解

    Oracle 序列详解 一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用途是生成表的主键值, ...

  9. oracle序列累加循环,Oracle 序列的使用与说明

    1.序列的创建与说明 创建序列,Oracle序列的语法格式为: CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/ MINV ...

最新文章

  1. WPF Layout System
  2. 一般源码安装添加的GD库 是不支持 jpeg 格式的图片的
  3. Android4.0 Launcher 源码分析系列(二)
  4. 5月23日任务 LAMP架构介绍、MySQL、MariaDB介绍、 MySQL安装
  5. linux 关闭打开的文件描述符,关闭它们后重新打开stdout和stdin文件描述符
  6. python自动注册邮箱_[转][Python][自动登录163邮箱]
  7. 亚马逊aws深度学习_AWS速查表:Amazon Web Services入门时首先要学习的5件事
  8. linux 内核空间与用户空间
  9. 关于qt中的tr( )函数
  10. Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39
  11. 软件基本功:数组赋值,一定要对齐
  12. mix2线刷开发板救砖_小米小米Mix 2手机快速救砖,线刷教程分享,小白轻松救活手机...
  13. (转)在 Linux 平台中调试 C/C++ 内存泄漏方法
  14. 请每一个孝顺的子女耐心的看下去!
  15. Azure IoT Edge入门(2)部署一台Edge Device
  16. C语言经典例题-两个分数相加
  17. 基于工业智能网关的PLC远程控制解决方案
  18. 微信小程序引入weui的操作
  19. Java中的各种锁和数据库中的锁
  20. 打车软件盛行,如何判断是否拒载

热门文章

  1. RSA公私钥加解密方式-工具类
  2. 扩容是元素还是数组_Java中对数组的操作
  3. 【CodeForces - 705C】Thor(模拟,STLset优化链表)
  4. 特殊mac地址文档_Mac颜值秒杀Win10?五款神器让Win10化身macOS
  5. java 调用动态链接库_JAVA技巧:JNative调用动态链接库问题(SOS)
  6. 改变定时器获取传感器频度_广东梅州梅县压力传感器*校对
  7. java 截串_java字符串截取
  8. Linux | 进程概念、进程状态(僵尸进程、孤儿进程、守护进程)、进程地址空间
  9. leetcode6. Z 字形变换
  10. leetcode205. 同构字符串 一般人一次做不对的简单题