zoukankan      html  css  js  c++  java
  • JAVA批量插入数据操作+事务提交

    package com.eg.egsc.egc.mapanalysisapp;
    
    import java.sql.Connection;
    import java.sql.Date;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.Random;
    
    /**
     * 批量操作+事务提交
     **/
    public class JdbcBatchInsertData {
        private static String url = "jdbc:postgresql://10.102.73.53:5432/test_db?rewriteBatchedStatements=true&characterEncoding=utf8&serverTimezone=GMT%2B8";
        private static String user = "test";
        private static String password = "test";
    
        public static void main(String[] args) {
            Connection conn = null;
            PreparedStatement pstm = null;
            try {
                Class.forName("org.postgresql.Driver");
                conn = DriverManager.getConnection(url, user, password);
                String sql = "INSERT INTO test_poi (id, park_id, project_id, longitude, latitude, type,"
                        + " project_short_desc, project_desc, tag_ids, version,"
                        + " pic_url, play_time, show_levels, play_number, wait_number,"
                        + " create_user, create_time, update_user, update_time, delete_flag) "
                        + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,? , ?, ?, ?, ?, ?, ?, ?)";
                pstm = conn.prepareStatement(sql);
                // 先将命令的提交方式设为false,即手动提交conn.setAutoCommit(false);
                // 最后在所有命令执行完之后再提交事务conn.commit();
                conn.setAutoCommit(false);
                Long startTime = System.currentTimeMillis();
                Random rand = new Random();
    //            int a, b;
                // 插入10万条数据
                for (int i = 1; i <= 100000; i++) {
                    // 随机值
    //                a = rand.nextInt(10);
    //                b = rand.nextInt(10);
                    // 1代表的是列索引,i是值
                    pstm.setString(1, i + "");
                    pstm.setString(2, i + "");// 园区ID
                    pstm.setString(3, i + ""); // 项目ID
                    pstm.setString(4, "109.18" + i); // 经度
                    pstm.setString(5, "19.6" + i); // 纬度
                    pstm.setInt(6, 1);// type
                    pstm.setString(7, "童话世界" + i);
                    pstm.setString(8, "这里是童话世界" + i);
                    pstm.setString(9, "1|2");// tag_id
                    pstm.setInt(10, 1); // 版本
                    pstm.setString(11, "picUrl");// picUrl
                    pstm.setInt(12, 4);// play_time
                    pstm.setString(13, "3|5"); // show_levels
                    pstm.setInt(14, 0);// play_number
                    pstm.setInt(15, 0);// wait_number
    //                Timestamp createDate = new Timestamp(System.currentTimeMillis());
    //                pstm.setTimestamp(16,createDate);// us_start_time
    //                pstm.setTimestamp(17, createDate);// us_end_time
                    pstm.setString(16, "admin");// create_user
                    pstm.setDate(17, new Date(i));// create_time
                    pstm.setString(18, "admin");// update_user
                    pstm.setDate(19, new Date(i));// update_time
                    pstm.setInt(20, 1);// delete_flag
                    pstm.addBatch();
                }
                pstm.executeBatch();
                // 此处再commit
                conn.commit();
                Long endTime = System.currentTimeMillis();
                System.out.println("************************正在插入中,请稍等******************************");
                System.out
                        .println("批量插入用时:" + ((endTime - startTime)) + "毫秒" + "约等于" + ((endTime - startTime) / 1000) + "秒");
                System.out.println("批量插入完成!");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            } finally {
                if (pstm != null) {
                    try {
                        pstm.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                        throw new RuntimeException(e);
                    }
                }
                if (conn != null) {
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                        throw new RuntimeException(e);
                    }
                }
            }
        }
    }
  • 相关阅读:
    Backbone的 listenTo 和 on
    前端工作流程
    Zepto源码笔记(三)
    Zepto源码笔记(二)
    Zepto源码笔记(一)
    Canvas基础学习(一)——实现简单时钟显示
    常用排序算法之JavaScript实现
    NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证
    浏览器基础知识
    学习Vim 全图解释
  • 原文地址:https://www.cnblogs.com/weigy/p/12454341.html
Copyright © 2011-2022 走看看