zoukankan      html  css  js  c++  java
  • 关于MYSQL批量INSERT数据(200W)

    1.根据自己的电脑开线程数量越多越快。

    2.

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    public class TestDataBase2 {
    
    public static void main(String[] args) {
    
        Connection conn = null;
        try {
            conn = DBUtil.getConnection();
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        String sql = "insert into ad_log_app(adid, vTime, userId, vValue,tradeFlag,lmCode) values (?,NOW(),?,?,?,?)";
    
        try {
            
            PreparedStatement prep = conn.prepareStatement(sql);
            conn.setAutoCommit(false);
            long start = System.currentTimeMillis();
            for(int i = 0; i < 200; i++){
                for (int j = 0; j < 10000; j++) {
                    prep.setInt(1, 81+j);
                    //prep.setDate(2,date);
                    prep.setInt(2, 1001267);
                    prep.setDouble(3, 0.01);
                    prep.setInt(4, 0);
                    prep.setInt(5, 0);
                    // 将预处理添加到批中
                    prep.addBatch();
                }// 预处理批量执行
                prep.executeBatch();
                prep.clearBatch();
                conn.commit();
            }
                
    
            long end = System.currentTimeMillis();
            System.out.print("total: ");
            System.out.println(end - start);
    
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(conn);
        }
    }
    }

    DBUTil

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.Properties;
    
    /**
     * 封装 数据库的连接过程
     *   可以使用连接数据库的过程被重用
     *    
     */
    public class DBUtil {
        //声明属性
        private static String driver;
        private static String url;
        private static String user;
        private static String pwd;
        //利用静态代码块,从配置文件中加载属性值
        static{
            Properties config = new Properties();
            try {
                config.load(DBUtil.class.getClassLoader().getResourceAsStream("ssgm.properties"));
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("配置文件读取错误");
            } 
            //初始化属性
            //将key对应的value取出来作为jdbc属性的值
            driver=config.getProperty("jdbc.driverclass");
            url=config.getProperty("jdbc.url");
            user = config.getProperty("jdbc.username");
            pwd = config.getProperty("jdbc.password");
        }
        
        /**
         * 封装数据库的连接过程
         *  封装: 数据库驱动注册和连接过程
         *  返回值是Connection 代表数据库的连接结果
         *  是Connection类型对象。
         */
        public static Connection getConnection()
            throws SQLException {
            try {
                Class.forName(driver);//需要处理异常
                Connection conn = DriverManager
                            .getConnection(url, user, pwd);
                return conn;//返回建立的连接对象
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                throw new SQLException("木有找到驱动",e);
            }
        }
        /**
         * 封装 关闭数据库连接的过程
         * @param conn 被关闭的连接对象
         */
        public static void close(Connection conn){
            if(conn!=null){//避免了空指针异常
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
  • 相关阅读:
    VintaSoft Barcode.NET SDK专业的条形码读写控件详细介绍
    数据库查询构建控件集Active Query Builder
    linux系统下集成开发工具选择
    linux常用命令
    ubuntu 10.10绚丽桌面效果及常用快捷键
    Restful服务1
    EasyJF简易的j2EE框架
    erlang学习1
    netbeans下 xdebug调试php
    介绍几个开源的网站
  • 原文地址:https://www.cnblogs.com/AbrahamBill/p/5257969.html
Copyright © 2011-2022 走看看