關於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();
            }
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM