Javaの実装の一括インポートデータのMySQLデータベース

この記事では、完全に他の誰かのをコピーします。

原題:Javaは、データベース(-2スピード最適化方法)にバッチデータを実装しました

オリジナル住所:https://blog.csdn.net/qy20115549/article/details/52699724

 オリジナルは明確に見えた、オリジナルの会場をご覧ください。

 

データベースへの接続

パッケージデシベル。
インポートのjava.sql.Connection;
インポートのjava.sql.DriverManager。
/ *    
 *合肥工业大学管理学院qianyang [email protected] 
 * / 
パブリック クラスはMySQLConnections {
     プライベート文字列ドライバ= "" ;
    プライベート文字列するDBURL = "" ;
    プライベート文字列のユーザ=「」;
    プライベート文字列のパスワード=「」;
    プライベート 静的の MySQLConnections接続= nullを

    プライベート MySQLConnections()スロー例外{ 
        ドライバ= "はcom.mysql.jdbc.Driver" 
        するDBURL = "はjdbc:mysqlの://127.0.0.1:3306 /テスト" ; 
        ユーザー =「ルート」
        パスワード = "112233" ; 
        System.out.println( "するDBURL:" + するDBURL)。
    } 

    パブリック 静的接続のgetConnection(){ 
        接続CONN = NULL ;
        もし(接続== nullの){
             試み{ 
                接続 = 新しいMySQLConnections(); 
            } キャッチ(例外e){
                e.printStackTrace(); 
                リターン ヌル
            } 
        } 
        試みる{ 
            Class.forNameの(connection.driver)。
            CONN = たDriverManager.getConnection(connection.dbURL、
                    connection.user、connection.password)。
        } キャッチ(例外e){ 
            e.printStackTrace(); 
        } 
        戻りCONN。
    } 
}

 

二つの方法のバッチ処理

一度最初の方法は、データベース内のすべての5000のレコード、。つまり、それぞれの提出はもちろん、最後の時間ではないかもしれないが、5000を記録しました。また、一つの方法は、デフォルトの提出を使用することです。どちらも、優れた処理速度です。15秒程度50000のレコード。

用パッケージ変更DB;
 インポートのjava.sql.Connection、
 インポートのjava.sql.PreparedStatement;
 インポートjava.sql.SQLExceptionという;
 / *    
 *肥大学[email protected]管理Qianyang 
 * / 
パブリック クラスMySQLUpdate {
     静的接続CON = MySQLConnections。 getConnection();
     静的 PreparedStatementのSTMT = NULL ;
     パブリック 静的 int型 executelnsert()がスローSQLExceptionが{
         INT I = 0 ;  
         // バッチ処理の組数              
        INT BATCHSIZE = 5000;        
        のstmt = con.prepareStatement( "(上記ID上、名前)INSERT INTO mysqltest" 
                + "値(、)??" );
         // 近いトランザクションを自動的に提出、この行を追加する必要があり 
        con.setAutoCommit(のためにINT 0 = J; J <50005; J ++ ){
             ++ I; 
            stmt.setInt( 1 、J);   
            stmt.setString( 2、 "名称" );   
            stmt.addBatch();   
            IF(I BATCHSIZE%== 0 ) { 
                stmt.executeBatch(); 
                con.commit(); 
            }
        }
         IF(!のBatchSizeの%I = 0 ){ 
            stmt.executeBatch(); 
            con.commit(); 
        } 
        を返す私を; 
    } 

    公共の 静的な  無効 executeInsert2を()スローするSQLException {
         // この行を追加する必要があります、閉じる自動トランザクションがコミット   
        詐欺を。 (にsetAutoCommit falseに); 
        STMT = con.prepareStatement( "INSERT INTOのmysqltest1(ID、名前)" 
                + "値(、)??" );
         のためのINT J = 0; J <50002; J ++ ){ 
            stmt.setInt(。1 、J)。  
            stmt.setString( 2、 "名前"); 
            stmt.addBatch(); 
        } 
        stmt.executeBatch()。
        con.commit(); 
        stmt.close();   
        con.close(); 
    } 

}

mainメソッド

用パッケージ変更、メイン
 インポートjava.sql.SQLExceptionという、
 インポートdb.MySQLUpdate;
 / *    
 *肥大学[email protected]管理Qianyang 
 * / 
パブリック クラスのテスト{ 

    公共 静的 ボイドメイン(文字列[]引数)がスローSQLExceptionが{
 //       begin1 =にSystem.currentTimeMillisロング(); 
 //       MySQLUpdate.executeInsert();
 //       ロングEND1 =にSystem.currentTimeMillis();  
 //       するSystem.out.println( "実行時間がある:" +(END1-begin1) ) ; 

        ロング begin2 = にSystem.currentTimeMillis(); 
        MySQLUpdate.executeInsert1()。
        長い END2 = にSystem.currentTimeMillis();   
        のSystem.out.println( "ランタイムは:" +(end2- begin2)); 
    } 

}

 

おすすめ

転載: www.cnblogs.com/Tpf386/p/11851002.html