java 下执行mysql 批量插入的几种方法及用时

2016-02-19 10:32 51 1 收藏

下面图老师小编要向大家介绍下java 下执行mysql 批量插入的几种方法及用时,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - 编程语言 】

方法1:

Java code
代码如下:

conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS);
        pstmt = conn
                .prepareStatement("insert into loadtest (id, data) values (?, ?)");
        for (int i = 1; i = COUNT; i++) {
            pstmt.clearParameters();
            pstmt.setInt(1, i);
            pstmt.setString(2, DATA);
            pstmt.execute();
        }

MyISAM:246.6秒、InnoDB:360.2秒

方法2: 使用事务,不自动commit

Java code
代码如下:

conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS);
        conn.setAutoCommit(false);
        pstmt = conn
                .prepareStatement("insert into loadtest (id, data) values (?, ?)");
        for (int i = 1; i = COUNT; i++) {
            pstmt.clearParameters();
            pstmt.setInt(1, i);
            pstmt.setString(2, DATA);
            pstmt.execute();
            if (i % COMMIT_SIZE == 0) {
                conn.commit();
            }
        }
        conn.commit();

InnoDB:31.5秒

方法3: executeBatch

Java code
代码如下:

conn = DriverManager.getConnection(JDBC_URL
                + "?rewriteBatchedStatements=true", JDBC_USER, JDBC_PASS);
        conn.setAutoCommit(false);
        pstmt = conn
                .prepareStatement("insert into loadtest (id, data) values (?, ?)");
        for (int i = 1; i = COUNT; i += BATCH_SIZE) {
            pstmt.clearBatch();
            for (int j = 0; j BATCH_SIZE; j++) {
                pstmt.setInt(1, i + j);
                pstmt.setString(2, DATA);
                pstmt.addBatch();
            }
            pstmt.executeBatch();
            if ((i + BATCH_SIZE - 1) % COMMIT_SIZE == 0) {
                conn.commit();
            }
        }
        conn.commit();

InnoDB:5.2秒

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

上面的使用时必须
1)rewriteBatchedStatements=true
2)useServerPrepStmts=true

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

方法4:先LOAD再COMMIT

Java code
代码如下:

conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS);
        conn.setAutoCommit(false);
        pstmt = conn.prepareStatement("load data local infile '' "
                + "into table loadtest fields terminated by ','");
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i = COUNT; i++) {
            sb.append(i + "," + DATA + "n");
            if (i % COMMIT_SIZE == 0) {
                InputStream is = new ByteArrayInputStream(sb.toString()
                        .getBytes());
                ((com.mysql.jdbc.Statement) pstmt)
                        .setLocalInfileInputStream(is);
                pstmt.execute();
                conn.commit();
                sb.setLength(0);
            }
        }
        InputStream is = new ByteArrayInputStream(sb.toString().getBytes());
        ((com.mysql.jdbc.Statement) pstmt).setLocalInfileInputStream(is);
        pstmt.execute();
        conn.commit();

来源:http://www.tulaoshi.com/n/20160219/1594951.html

延伸阅读
标签: 孕期
运动过量造成流产风险 现在选择流产的女性越来越多,流产的主要症状为出血与腹痛。如处理不当或处理不及时,可能遗留生殖器官炎症,或因大出血而危害孕妇健康,甚至威胁生命。 根据本人与大学运动员一起工作的经验,月经不调的原因并非总是清楚明白的。例如,许多年轻女性的体脂百分比并不低,每周长跑的里程数也不...
标签: 整容
问答 图钉提问: 请问口交的方法有几种?(男女)口交时女口男是允吸还是含还是深喉呀?男口女是舔还是吸? 图老师解答: 应该注意卫生。方法根据自己爱好选择。 垫下巴的几种方法 整容介绍 我今年已经有二十五岁了tuLaoShi.com,我一直觉得我的外...
标签: 胎教 育儿 怀孕
1、音乐胎教 这对胎儿智力开发有特殊的功能,音乐是孕妇与胎儿建立感情联系的纽带,温静、动听、悦耳的轻音乐,能使母亲得到美的享受,给胎儿以安宁感,可使胎儿心律平稳,对胎儿大脑发育是个良好的刺激。神经生理学者认为,优美健康的音乐,能促进孕妇分泌酶和乙酰胆碱等物质,能调节孕妇血流量和使神经细胞有兴奋作用,从而改...
标签: 妊娠纹 孕前
孕早期 5样事情必须做 怀孕开始到第3个月称为妊娠早期。此时,随着孕妇体形的变化,身体负担增大,孕妇心理上会产生羞怯感、不安感和母性意识的萌芽。并且随着妊娠反应的出现,孕妇会出现情绪烦躁和厌恶感。为了宝宝的健康,准妈妈必须谨记5样事情! 妊娠早期是胎儿发育和各器官形成时期,同时是致畸的危险期,更是胎儿最不稳定、易于流产...
JAVA中去掉空格   1. String.trim()  trim()是去掉首尾空格  2.str.replace(" ", ""); 去掉所有空格,包括首尾、中间  代码如下: String str = " hell o ";  String str2 = str.replaceAll(" ", "");  System.out.println(str2);     3.或者replaceAll(" +",""); 去掉所有空格...

经验教程

242

收藏

23
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部