精华内容
下载资源
问答
  • 插入java数据

    2020-12-24 01:04:58
    使用java + oracle插入clob类型的数据使用java + oracle插入clob类型的数据,需要用以下的步骤:1、将数据插入数据库,对于clob字段,使其为空clob数据。例如:insert into test values(1,empty_clob())";2、从...

    使用java + oracle插入clob类型的数据

    使用java + oracle插入clob类型的数据,需要用以下的步骤:1、将数据插入数据库,对于clob字段,使其为空clob数据。例如:insert into test values(1,empty_clob())";2、从数据库中取出插入的clob字段,并将其赋值给oracle.sql.c...

    文章

    老牛的博客

    2009-11-08

    878浏览量

    Java知识点总结(Java容器-Vector)

    Java知识点总结(Java容器-Vector)

    Vector

    与ArrayList相似,但是Vector是同步的。所以说Vector是线程安全的动态数组。它的操作与ArrayList几乎一样。

    ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插...

    文章

    优惠券活动

    2018-05-29

    1242浏览量

    java面试题集锦(不断更新中)

    Collection 和 Collections的区别。

    Collections是个Java.util下的类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

    Collection是个java.util下的接口,它是各种集合结构的父接口。

    ArrayList和Vector...

    文章

    slalx_1986

    2009-03-11

    1081浏览量

    Quick BI 数据可视化分析平台

    2020年入选全球Gartner ABI魔力象限,为中国首个且唯一入选BI产品

    广告

    hibenate 操作oracle 日期问题

    hibernate 使用日期,

    oracle 可以设置为 Date  ,Date 可以精确到秒,在java向数据库添加精确到秒的日期时,可以直接

    set(new Date()),这样在数据库中显示的是 2015/10/17 16:15:13,直接用session.get()取出来,得到

    的日期...

    文章

    lhyxcxy

    2015-10-17

    1008浏览量

    ArrayList、Vector、LinkedList的存储性能和特性简述

    ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector中的方法由于添加了synchronized修饰,因此Vector是线程安全的...

    文章

    唐怀瑟

    2018-07-25

    1195浏览量

    插入、更新、删除表中的数据

    插入、更新、删除表中的数据

    笔记

    (文中的姓名、电话等为随机编写的,如有冒犯,请多多包涵)

    >需求1

    向科目表中添加数据,如表1

    科目编号

    科目名

    课时数

    年级编号

    1

    Logic Java

    220

    1

    2

    HTML

    160

    1

    3

    Java OOP

    230

    2

    第...

    文章

    优惠券发放

    2018-04-21

    1033浏览量

    Java-JDBCUtil工具类

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.io.IOException;

    import java.io.InputStream;

    im...

    文章

    毕来生

    2017-07-08

    1221浏览量

    Sqlite插入或更新

    本文主要介绍Sqlite如何实现插入或更新。

    在数据库中我们经常会有这种需求,插入时,某条记录不存在则插入,存在则更新。或更新时,某条记录存在则更新,不存在则插入。比如:

    人员信息数据库,某个身份证若已经存在,重复插入则更新,否则新增记录。

    网页缓存数据库,某个url已经存在,重复插入则更新,否则...

    文章

    trinea-cn

    2016-04-11

    3599浏览量

    Android SparseArray与ArrayMap

    公共类数据Constant.java

    /**

    * 常量类

    * @author mazaiting

    * @date 2018/2/7

    */

    public class Constant {

    public static final int MAX = 1000000;

    publ...

    文章

    凌浩雨

    2018-02-07

    681浏览量

    Java排序算法 插入排序

    有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到插入排序法。本文主要介绍的是插入排序的java实现。

    AD:

    插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。比较和交换...

    文章

    白展糖

    2012-12-11

    886浏览量

    JDBC事务管理及SavePoint示例

    默认情况下,当我们创建一个数据库连接时,会运行在自动提交模式(Auto-commit)下。这意味着,任何时候我们执行一条SQL完成之后,事务都会自动提交。所以我们执行的每一条SQL都是一个事务,并且如果正在运行DML或者DDL语句,这些改变会在每一条SQL语句结束的时存入数据库。有时候我们想让一组...

    文章

    王爵nice

    2016-05-14

    1443浏览量

    mySQL教程 第9章 触发器

    第9章 触发器

    入的新数据放到new表,删除的数据放到old表。

    准备本章学习环境

    连接数据库schoolDB,删除表TStudent,TScore和Tsubject中的所有数据。

    delete from TStudent;

    delete from TScore;

    delete from TSub...

    文章

    技术小阿哥

    2017-11-02

    882浏览量

    java串口通讯

    最近在做java串口通讯,主要是用个人电脑通过串口从RS485读取数据,并通过crc循环冗余校验,把接收正确的数据解析,插入数据库mysql,并用SSH技术把数据库数据以表格以及图表形式显示

    思路:

    1.为了从RS485读取数据,由于暂时没有硬件设备,系统是win7,故采用Vir...

    文章

    一叶飘舟

    2012-11-12

    1716浏览量

    关于找工作中Java问题

    这个也是一点点更新哈,不会一次写完。

    String 和StringBuffer的区别

    JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据这个String类提供了数值不可改变字符串而这个StringBuffer类提供的字符串进行修...

    文章

    yexx

    2016-10-04

    949浏览量

    干货~多线程下1分钟完成1000万条数据插入到数据库中

    原文:干货~多线程下1分钟完成1000万条数据插入到数据库中

    环境:准备测试前,我查看了一下我公司的电脑是4核的(四个子窗口)

    废话少说,直接附上代码和结果吧

    package tenThreadInsert;

    import java.sql.Connection;

    import j...

    文章

    杰克.陈

    2017-12-29

    2585浏览量

    JAVA插入sql代码

    插入数据

    import java.sql.*;

    /**

    * @version 2012-02-22

    * @author

    */

    public class InsertDemo {

    public static void main(String[] args) throws SQLEx...

    文章

    小波linux

    2015-10-30

    445浏览量

    Java专家推荐之资深讲师徐雷,.NET转Java需要先了解Java的哪些框架?

    社区将持续介绍优秀的Java专家,本期请到了阿里云大学讲师,资深架构师徐雷,在线为开发者解决问题,向徐雷提问请点击:https://yq.aliyun.com/promotion/755

    徐雷,资深架构师

    徐雷,花名:徐雷frank;资深架构师,MongoDB中文社区联席主席,吉林大学计...

    文章

    李博 bluemind

    2018-11-30

    1937浏览量

    一种简单的数据库性能测试方法

    这两天接到一个任务,要测试一个服务器的性能,客户要求向数据库内

    1000/s(每插入一千条数据)

    的处理能力,当时脑子赌赛了,想的是用LR来进行,由于LR接触不深,只知道LR实现参数化的时候可以调用数据库里面的数据,往里面大批量的插入数据,以

    前没试过。

    翻阅了一下资料,找...

    文章

    虫师2016

    2016-04-27

    2072浏览量

    (二十七)mongodb操作学习

    在不使用mongodbVUE图形界面工具的情况下,打开数据库和集合后,如果要:

    插入一条字段名为name,内容为java的记录,可以写成x={name:"java"};,然后回车,然后输入db.things.save(x);,再回车,这样就插入了一条数据到数据库的集合中。(things...

    文章

    涂宗勋

    2015-04-21

    983浏览量

    数据结构和算法的概述

    数据结构:对计算机内存中的数据的一种安排

    算法:对结构中的数据进行各种处理

    应用方面:

    现实世界的数据

    程序员的工具

    现实世界的建模

    数据结构

    数组

    优点:插入快(知道下标,索引位子)

    缺点:查找慢,删除慢,大小固定

    有序数组

    优点: 插入快

    缺点:查找慢,删除慢,大小固定

    优...

    文章

    helei在路上

    2017-04-24

    526浏览量

    java实现插入排序

    有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法。插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)...

    文章

    飞翔的兔兔

    2017-06-01

    508浏览量

    绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来

    原文:绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来

    我用到的数据库为,mysql数据库5.7版本的

    1.首先自己准备好数据库表

    其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下:

    com.mysql....

    文章

    杰克.陈

    2017-12-29

    1230浏览量

    持久化API(JPA)系列(三)实体Bean的开发技术-建立与数据库的连接

    在EJB 2.x中。EJB有3种类型的Bean。各自是会话Bean(Session Bean)、消息驱动Bean(Message-Driven Bean)和实体Bean(Entity Bean)。

    随着EJB 3的推出,EJB2.x中的实体Bean逐渐被JPA规范所替代,J...

    文章

    技术mix呢

    2017-11-01

    945浏览量

    大数据应用之HBase数据插入性能优化之多线程并行插入测试案例

    一、引言:

    上篇文章提起关于HBase插入性能优化设计到的五个参数,从参数配置的角度给大家提供了一个性能测试环境的实验代码。根据网友的反馈,基于单线程的模式实现的数据插入毕竟有限。通过个人实测,在我的虚拟机环境下,单线程插入数据的值约为4w/s。集群指标是:CPU双核1.83,虚拟机512M内...

    文章

    胖子哥

    2016-04-19

    2438浏览量

    Oracle子查询及事务处理

    Oracle操作数据,使用子查询插入数据:

    当时用values子句时,一次能插入一行数据,当时用子查询插入数据时,一条insert语句可以插入大量的数据,当处理迁移或者装在外部表的数据到数据库时,可以使用子查询来插入数据。

    create table   wangibng  (myid  numb...

    文章

    黎明的烬

    2017-03-07

    656浏览量

    Java使用二分插入排序竟然和直接插入排序速度比较

    

    Java使用二分插入排序竟然和直接插入排序速度比较

    之前测试过Python使用二分插入排序竟然比直接插入排序快99倍!

    现在测试下 Java,Linux测试结果如下:

    javac test.java

    java testInsertSort total milliseconds:15769...

    文章

    杨振平

    2016-01-07

    686浏览量

    13.13 java.util.ConcurrentModificationException

    13.13 java.util.ConcurrentModificationException

    问题描述

    在H5性能测试平台系统的开发过程中,客户端调用服务端API,写入性能数据的时候,报了如下错误:

    java.util.ConcurrentModificationException at

    ja...

    文章

    程序员诗人

    2017-05-06

    696浏览量

    Java程序员在写SQL程序时候常犯的10个错误

    Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准:

    技能(任何人都能容易学会命令式编程)

    模式(有些人用“模式-模式”,举个例子,模式可以应用到任何地方,而且都可以归为某一类模式)

    心境(首先,要写个好的面向对象程序是比命令式程序难的...

    文章

    shy丶gril

    2016-05-18

    1565浏览量

    Java程序员在写SQL程序时候常犯的10个错误

    Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准:

    技能(任何人都能容易学会命令式编程)

    模式(有些人用“模式-模式”,举个例子,模式可以应用到任何地方,而且都可以归为某一类模式)

    心境(首先,要写个好的面向对象程序是比命令式程...

    文章

    楚兴

    2013-08-05

    1198浏览量

    SQL Server 云下数据增量同步至阿里云 RDS for SQL Server

    近期有一个需求,将云下 SQL Server 的数据同步至云上 RDS for SQL Server。不考虑增量的话,可以直接使用 SSMS 数据库导出功能直接迁移数据到 RDS,但如果要进行增量同步的话则无法直接使用,尤

    其是还要做数据过滤的场景。

    那该如何解呢?可以使用 kettle 工作来...

    文章

    knightzxh

    2017-10-29

    2243浏览量

    展开全文
  • java代码多线程批量插入数据

    千次阅读 2021-02-12 16:17:50
    package root.report.control.dict;import org.apache.ibatis.session.SqlSession;import root.report.db....import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;i...

    package root.report.control.dict;

    import org.apache.ibatis.session.SqlSession;

    import root.report.db.DbFactory;

    import java.sql.Connection;

    import java.sql.PreparedStatement;

    import java.sql.SQLException;

    import java.util.Date;

    import java.util.concurrent.CountDownLatch;

    import java.util.concurrent.ExecutorService;

    import java.util.concurrent.Executors;

    /**

    * @Auther: pccw

    * @Date: 2018/10/29 17:45

    * @Description:

    */

    /*

    往自己本地mysql 当中插入10W条记录

    */

    public class TestTwo {

    public static void main(String args[]) throws SQLException {

    SqlSession sqlSession = DbFactory.Open(DbFactory.FORM);

    // insert(sqlSession);

    insertTwo(sqlSession);

    }

    // 多线程案例 使用fix线程 规定为5个

    public static void insertTwo(SqlSession sqlSession) throws SQLException {

    Connection conn = sqlSession.getConnection();

    // 开始时间

    Long begin = new Date().getTime();

    final StringBuffer suffix = new StringBuffer();

    // sql前缀

    String prefix = "INSERT INTO test_dict (code,name) VALUES ";

    // 设置事务为非自动提交

    conn.setAutoCommit(false);

    // 比起st,pst会更好些

    PreparedStatement pst = (PreparedStatement) conn.prepareStatement("");//准备执行语句

    final CountDownLatch count = new CountDownLatch(5); //相当线程执行计时器,await()让线程等待,用countDown()消初始化数量。当数量等于0时线程唤醒

    ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5); //线程池

    synchronized (fixedThreadPool) {

    for (int i = 1; i <= 5; i++) {

    final int index = i;

    if (i == 1) {

    fixedThreadPool.execute(new Runnable() {

    @Override

    public void run() {

    for (int j = 1; j < 10; j++) {

    // 构建SQL后缀

    suffix.append("(" + j + "," + "'0000" + j + "'),");

    }

    count.countDown();

    }

    });

    } else if (i == 2) {

    fixedThreadPool.execute(new Runnable() {

    @Override

    public void run() {

    for (int j = 10; j < 100; j++) {

    // 构建SQL后缀

    suffix.append("(" + j + "," + "'000" + j + "'),");

    }

    count.countDown();

    }

    });

    } else if (i == 3) {

    fixedThreadPool.execute(new Runnable() {

    @Override

    public void run() {

    for (int j = 100; j < 1000; j++) {

    // 构建SQL后缀

    suffix.append("(" + j + "," + "'00" + j + "'),");

    }

    count.countDown();

    }

    });

    } else if (i == 4) {

    fixedThreadPool.execute(new Runnable() {

    @Override

    public void run() {

    for (int j = 1000; j < 10000; j++) {

    // 构建SQL后缀

    suffix.append("(" + j + "," + "'0" + j + "'),");

    }

    count.countDown();

    }

    });

    } else {

    fixedThreadPool.execute(new Runnable() {

    @Override

    public void run() {

    for (int j = 10000; j <= 99999; j++) {

    // 构建SQL后缀

    suffix.append("(" + j + "," + "'" + j + "'),");

    }

    count.countDown();

    }

    });

    }

    }

    }

    try {

    count.await();

    // 构建完整SQL

    String sql = prefix + suffix.substring(0, suffix.length() - 1);

    // 添加执行SQL

    pst.addBatch(sql);

    // 执行操作

    pst.executeBatch();

    // 提交事务

    conn.commit();

    // 头等连接

    pst.close();

    conn.close();

    // 结束时间

    Long end = new Date().getTime();

    System.out.println("10万条数据插入花费时间 : " + (end - begin) + " ms");

    System.out.println("插入完成");

    } catch (InterruptedException e) {

    e.printStackTrace();

    }finally {

    fixedThreadPool.shutdown();

    }

    }

    // 测试使用 fetch 按照指定规格读取数据

    }

    展开全文
  • Java代码数据库操作事务

    千次阅读 2021-03-10 08:16:33
    这是一种使用非常方便的实现事务特性的代码段,其中try-catch代码块中的代码执行一次保存操作提交一次事务//添加事务Object r = new NewTransactionTemplate().execute(new TransactionCallback() {ArpInvoiceModel ...

    这是一种使用非常方便的实现事务特性的代码段,其中try-catch代码块中的代码执行一次保存操作提交一次事务

    //添加事务

    Object r = new NewTransactionTemplate().execute(new TransactionCallback() {

    ArpInvoiceModel tempModel = new ArpInvoiceModel();

    @Override

    public Object doInTransaction(TransactionStatus arg0) {

    //保存

    try {

    tempModel = arpInvoiceManager.saveInvoicegenerate(arpInvoiceModel, details, fids, "", "", null, tempModel, thisOperateSign, "","");

    } catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    return tempModel;

    }

    });

    仅供参考;

    展开全文
  • 1. 场景 : 往数据库插入10W条记录2. 思考方案 : 单纯的我们这里不涉及其他任何操作,我们只是想生成一个10W条记录而已,中间无其他步骤,得到的效果如下图所示,而我们又不会mysql脚本啊之类的,那我们不如用java...

    1. 场景 : 往数据库插入10W条记录

    2. 思考方案 : 单纯的我们这里不涉及其他任何操作,我们只是想生成一个10W条记录而已,中间无其他步骤,得到的效果如下图所示,

    而我们又不会mysql脚本啊之类的,那我们不如用java来实现,用jdbc的批次操作来完成 ,博客借鉴自:

    https://blog.csdn.net/summeranhx/article/details/81583575?utm_source=blogxgwz0

    实现的效果图为 :

    47cec665b0744e8d8de2dd5d84cfdd34.png

    3. 代码为 :

    packageroot.report.control.dict;importorg.apache.ibatis.session.SqlSession;importroot.report.db.DbFactory;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;importjava.util.Date;/*** @Auther: pccw

    * @Date: 2018/10/29 17:45

    * @Description:*/

    /*往自己本地mysql 当中插入10W条记录*/

    public classTestTwo {public static voidmain(String args[]){

    SqlSession sqlSession=DbFactory.Open(DbFactory.FORM); // 本地mysql数据库

    insert(sqlSession);

    }public static voidinsert(SqlSession sqlSession){

    Connection conn=sqlSession.getConnection();//开始时间

    Long begin = newDate().getTime();//sql前缀

    String prefix = "INSERT INTO test_dict (code,name) VALUES ";try{//保存sql后缀

    StringBuffer suffix = newStringBuffer();//设置事务为非自动提交

    conn.setAutoCommit(false);//比起st,pst会更好些

    PreparedStatement pst = (PreparedStatement) conn.prepareStatement("");//准备执行语句//外层循环,总提交事务次数

    for (int i = 1; i <= 5; i++) {

    suffix= newStringBuffer();//第j次提交步长

    if(i == 1) {for (int j = 1; j < 10; j++) {//构建SQL后缀

    suffix.append("(" + j+","+"'0000" +j+"'),");

    }

    }else if(i == 2) {for (int j = 10; j < 100; j++) {//构建SQL后缀

    suffix.append("(" + j+","+"'000" +j+"'),");

    }

    }else if(i == 3) {for (int j = 100; j < 1000; j++) {//构建SQL后缀

    suffix.append("(" + j+","+"'00" +j+"'),");

    }

    }else if(i == 4) {for (int j = 1000; j < 10000; j++) {//构建SQL后缀

    suffix.append("(" + j+","+"'0" +j+"'),");

    }

    }else{for (int j = 10000; j <= 99999; j++) {//构建SQL后缀

    suffix.append("(" + j+","+"'" +j+"'),");

    }

    }//构建完整SQL

    String sql = prefix + suffix.substring(0, suffix.length() - 1);//添加执行SQL

    pst.addBatch(sql);//执行操作

    pst.executeBatch();//提交事务

    conn.commit();//清空上一次添加的数据

    suffix = newStringBuffer();

    }//头等连接

    pst.close();

    conn.close();

    }catch(SQLException e) {

    e.printStackTrace();

    }//结束时间

    Long end = newDate().getTime();//耗时

    System.out.println("10万条数据插入花费时间 : " + (end - begin) / 1000 + " s");

    System.out.println("插入完成");

    }

    }

    不难看出,代码没什么含金量,代码着重在于下面2处操作:

    //添加执行SQL

    pst.addBatch(sql);//执行操作

    pst.executeBatch();

    4. 我们再改写成用多线程的方式试试 :

    改写成多线程 方案则要考虑到使用何种线程池 ? 线程池线程都执行完才能继续执行下一步骤,在此期间怎样感知线程执行完毕 ?

    没错,我们这在这里使用了  newFixedThreadPool  这个线程池,这是直接规划出多少个线程,然后我们怎样让线程执行完毕再执行其他的?

    没错,我们直接使用

    final CountDownLatch count = new CountDownLatch(5);

    CountDownLatch 这个并发包辅助类 -》当我们线程执行完一个任务之后,count.countDown(); -》 同时对于fixedThreadPool 这个变量

    要使用 synchronized 来进行锁定,然后在整个方法之外 对 count 变量进行 await()唤醒操作,继续执行下列步骤。

    好了,废话少说,下面贴出代码 :

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    packageroot.report.control.dict;importorg.apache.ibatis.session.SqlSession;importroot.report.db.DbFactory;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;importjava.util.Date;importjava.util.concurrent.CountDownLatch;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;/*** @Auther: pccw

    * @Date: 2018/10/29 17:45

    * @Description:*/

    /*往自己本地mysql 当中插入10W条记录*/

    public classTestTwo {public static void main(String args[]) throwsSQLException {

    SqlSession sqlSession=DbFactory.Open(DbFactory.FORM);//insert(sqlSession);

    insertTwo(sqlSession);

    }//多线程案例 使用fix线程 规定为5个

    public static void insertTwo(SqlSession sqlSession) throwsSQLException {

    Connection conn=sqlSession.getConnection();//开始时间

    Long begin = newDate().getTime();final StringBuffer suffix = newStringBuffer();//sql前缀

    String prefix = "INSERT INTO test_dict (code,name) VALUES ";//设置事务为非自动提交

    conn.setAutoCommit(false);//比起st,pst会更好些

    PreparedStatement pst = (PreparedStatement) conn.prepareStatement("");//准备执行语句

    final CountDownLatch count = new CountDownLatch(5);

    ExecutorService fixedThreadPool= Executors.newFixedThreadPool(5);synchronized(fixedThreadPool) {for (int i = 1; i <= 5; i++) {final int index =i;if (i == 1) {

    fixedThreadPool.execute(newRunnable() {

    @Overridepublic voidrun() {for (int j = 1; j < 10; j++) {//构建SQL后缀

    suffix.append("(" + j + "," + "'0000" + j + "'),");

    }

    count.countDown();

    }

    });

    }else if (i == 2) {

    fixedThreadPool.execute(newRunnable() {

    @Overridepublic voidrun() {for (int j = 10; j < 100; j++) {//构建SQL后缀

    suffix.append("(" + j + "," + "'000" + j + "'),");

    }

    count.countDown();

    }

    });

    }else if (i == 3) {

    fixedThreadPool.execute(newRunnable() {

    @Overridepublic voidrun() {for (int j = 100; j < 1000; j++) {//构建SQL后缀

    suffix.append("(" + j + "," + "'00" + j + "'),");

    }

    count.countDown();

    }

    });

    }else if (i == 4) {

    fixedThreadPool.execute(newRunnable() {

    @Overridepublic voidrun() {for (int j = 1000; j < 10000; j++) {//构建SQL后缀

    suffix.append("(" + j + "," + "'0" + j + "'),");

    }

    count.countDown();

    }

    });

    }else{

    fixedThreadPool.execute(newRunnable() {

    @Overridepublic voidrun() {for (int j = 10000; j <= 99999; j++) {//构建SQL后缀

    suffix.append("(" + j + "," + "'" + j + "'),");

    }

    count.countDown();

    }

    });

    }

    }

    }try{

    count.await();//构建完整SQL

    String sql = prefix + suffix.substring(0, suffix.length() - 1);//添加执行SQL

    pst.addBatch(sql);//执行操作

    pst.executeBatch();//提交事务

    conn.commit();//头等连接

    pst.close();

    conn.close();//结束时间

    Long end = newDate().getTime();

    System.out.println("10万条数据插入花费时间 : " + (end - begin) + " ms");

    System.out.println("插入完成");

    }catch(InterruptedException e) {

    e.printStackTrace();

    }finally{

    fixedThreadPool.shutdown();

    }

    }//测试使用 fetch 按照指定规格读取数据

    }

    多线程执行批量插入

    那么,其实我的机子是8G内存的,在上面非多线程模式执行代码,花费了4S :

    ca3909ead3f3f2a5be395e146724b314.png

    而我们使用了多线程之后,发现连1S都不到,而且数据库数量也都是对的:

    54d12629e5dc681b141ec97f29338030.png

    展开全文
  • 问题描述之前遇到过一个这样的问题:在服务A里的...后来通过调试才发现,是因为在服务A里的保存方法加了事务注解,保存的数据结果只有在当前方法执行完成才会对外生效,而MQ消息则是在保存方法执行前发送的,如...
  • 当前需要做个测试,mysql数据库需要5000万数据来完成性能测试,于是我们写了个函数来完成这个功能。函数定义如下:#批量插入数据库的函数BEGIN#定义需要插入数据库表中的字段;DECLARE id BIGINT(20);DECLARE phone_...
  • /*java使用事务处理,首先要求数据库支持事务,如使用MYSQL的事务功能,就要求mysql的表类型为Innodb,*//*InnoDB,是MySQL的数据库引擎之一与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务...
  • 虽说不一定5分钟就插入完毕,因为取决去所插入的字段,如果字段过多会稍微慢点,但不...线程池数据插入核心代码:ExecutorService executorService = Executors.newFixedThreadPool();executorService.submit(new ...
  • 一般关于批量向数据库插入数据都采用PreparedStatement、Statement…………也包括直接使用JDBC API、框架…………也看到过几篇关于这些内容的总结,及大家的评论,以下为我总结的关于批量向数据库插入数据。...
  • 在同一个事物中,更新(事务提交)再查询也是可以查询到更新数据,所以你的这个过程是可以的,是有数据库保证的。举个例子吧:package com.lz.dao.base;import java.sql.Connection;import java.sql....
  • 当前位置:我的异常网» Java Web开发»批量插入20w条数据,长事务有关问题批量插入20w条数据,长事务有关问题www.myexceptions.net网友分享于:2013-01-24浏览:57次批量插入20w条数据,长事务问题我把所有要...
  • import java.sql.*;public classDateMigrationLagou {//连接SQLiteprivate Connection getSqlite() throwsException {Class.forName("org.sqlite.JDBC");return DriverManager.getConnection("...
  • 在服务间调用的过程中,服务1调到服务2进行插入数据,插入成功在服务1的后续代码查询不到服务2插入的数据。发现是事务的问题,但是其中原理还不是很清楚。 后续解决办法是 TransactionSynchronizationManager...
  • 为了提高效率,这个时候我们首先想到多线程并发插入,但是如何控制事务呢 … 直接上干货实现效果开启多条子线程,并发插入数据库当其中一条线程出现异常,或者处理结果为非预期结果,则全部线程均回滚代码实现@...
  • 为了提高效率,这个时候我们首先想到多线程并发插入,但是如何控制事务呢 … 直接上干货实现效果开启多条子线程,并发插入数据库当其中一条线程出现异常,或者处理结果为非预期结果,则全部线程均回滚代码实现@...
  • Spring代码实现:import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;import org.springframework.transaction.support.TransactionSynchronizationAdapter;...
  • java事务详解以及JDBC代码示例 一:事务的ACID特性 Ø 原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。 Ø 一致性(consistency):在事务处理执行前后,数据库是一致的(数据库...
  • 一开始觉得100w的数据量不大,于是就插啊插,吃了个饭,回来一看,在插入了50多w条数据后,每秒就只能插10条了。。觉得很奇怪,为啥越插越慢呢? 于是就开始分析插入的时间损耗,想到了如下的解决方案:(mysql使用的...
  • SQL 类型 CLOB 在 JavaTM ...默认情况下,驱动程序使用 SQL locator(CLOB) 实现 Clob 对象,这意味着 CLOB 对象包含一个指向 SQL CLOB 数据而不是数据本身的逻辑指针。Clob 对象在它被创建的事务处理期间有效。CL...
  • //插入成功否Connectionconn=getConnection();//获取数据库连接PreparedStatementps=null;try{MyLog.e(">>>开始<<boolean isInsertOk = true;//插入成功否Connection conn = getConnection();//获...
  • Java操作MySQL数据库——连接数据库 1. 在数据库中建立表 CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT ...
  • hibernate 批量插入数据

    2021-02-27 20:57:25
    如题,有两种方法1)使用FLUSH2)使用JDBC分别来解释:1)hibernate在进行数据库...在说到hibernate中的save() 或者saveOrUpdate()方法,其实,它们都是利用hibernate的一级缓存,在事务没有提交的时候,所有对象,并...
  • 有位朋友,某天突然问磊哥:在 Java 中,防止重复提交最简单的方案是什么?这句话中包含了两个关键信息,第一:防止重复提交;第二:最简单。于是磊哥问他,是单机环境还是分布式环境?得到的反馈是单机环境,那就...
  • 摘要 本文介绍在java中进行事务处理的方法,通过实例分别讲述了如何采用JavaBean、EJB组件实现J2EE应用服务器支持的JDBC事务、JTA(Java Transaction API)事务。关键词 JavaBean,EJB, 数据库,事务处理,...
  • #1 问题描述# 最近有小伙伴在做商品抽奖活动时,在对奖品库存进行扣减,有线程安全的问题,遂加锁synchronized进行同步,但发现加锁并没有控制住库存线程安全的问题,导致库存仍被超发。先简单介绍下,各层的技术...
  • Java向MySql数据库插入万级记录时,采用的方案不同时执行速度会有所不同,数据量越大则优劣越明显。所以选取最优方案尤其重要,本文目前提供如下两种解决方案(不借用第三方框架或工具)。二、解决问题。1、方案一:...
  • 在执行数据更改操作前使用数据库连接对象调用setAutoCommit方法(conn.setAutoCommit(false)),其参数true或false区别:true:sql命令的提交(commit)由驱动程序负责false:sql命令的提交由应用程序负责,程序必须调用...
  • 想往某个表中插入几百万条数据做下测试,原先的想法,直接写个循环10W次随便插入数据试试吧,好吧,我真的很天真....DROP PROCEDURE IF EXISTS proc_initData;--如果存在此存储过程则删掉DELIMITER $CREATE ...
  • 操作B也必须执行成功如何实现普通的执行A,之后执行B,是可以满足要求1,对于要求2通常需要设计补偿的操作一般边缘的操作,通常会设置成为异步的,以提升性能,比如发送MQ,业务系统负责事务成功消息发送成功,...
  • 估算文件大小因为告诉文件有千万条,同时每条记录大概在20个字段左右,所以可以大致估算一下整个订单文件的大小,方法也很简单使用FileWriter往文件中插入一千万条数据,查看文件大小,经测试大概在1.5G左右;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,702
精华内容 23,880
关键字:

java插入数据后提交事务代码

java 订阅