私が使用しているデータベースはMySQLデータベースバージョン5.7です まずデータベーステーブルを自分で準備する 実は、1000 万のデータを挿入するときにいくつか問題が発生しました。まずはそれらを解決します。最初は、100 万のデータを挿入するときにエラーが発生しました。コンソール情報は次のとおりです。
上記のエラーは、データベース テーブルの max_allowed_packet 構成が十分大きくないために発生します。デフォルトは 4M です。その後、これを 100M に調整したところ、エラーは報告されなくなりました。 グローバルmax_allowed_packetを100*1024*1024*に設定する 設定後にデータベースに再度ログインして、設定した値を確認する必要があることに注意してください。 '%max_allowed_packet%' のような変数を表示します コードは次のとおりです。 添付文書; java.sql.Connection をインポートします。 java.sql.DriverManager をインポートします。 java.sql.SQLException をインポートします。 java.util.Date をインポートします。 com.mysql.jdbc.PreparedStatement をインポートします。 パブリッククラス InsertTest { パブリック静的void main(String[] args)はClassNotFoundException、SQLExceptionをスローします{ 最終的な文字列 url = "jdbc:mysql://127.0.0.1/teacher" ; 最終的な文字列名 = "com.mysql.jdbc.Driver"; 最終的な文字列 user = "root" ; 最終的な文字列パスワード = "123456" ; 接続 conn = null; Class.forName(name); //接続タイプを指定します conn = DriverManager.getConnection(url, user, password); //接続を取得します if (conn!= null ) { System.out.println("接続が正常に取得されました"); 挿入(conn); } それ以外 { System.out.println("接続を取得できませんでした"); } } パブリック静的void挿入(接続conn) { // 開始時刻 Long begin = new Date().getTime(); // sql プレフィックス String prefix = "INSERT INTO t_teacher (id,t_name,t_password,sex,description,pic_url,school_name,regist_date,remark) VALUES "; 試す { // SQL サフィックスを保存します。StringBuffer suffix = new StringBuffer(); // トランザクションを非自動コミットに設定します。conn.setAutoCommit( false ); // PST は ST よりも優れています PreparedStatement pst = (PreparedStatement) conn.prepareStatement( "" ); // ステートメントを実行する準備をします // 外側のループ、コミットされたトランザクションの合計数 for ( int i = 1 ; i <= 100 ; i++) { サフィックス = 新しいStringBuffer(); // j 番目の送信ステップ for ( int j = 1 ; j <= 100000 ; j++) { // SQL サフィックスを構築 suffix.append( "('" + uutil.UUIDUtil.getUUID()+ "','" +i*j+ "','123456'" + ",'Male'" + ",'Teacher'" + ",'www.bbk.com'" + ",'XX University'" + ",'" + "2016-08-12 14:43:26" + "','Note'" + ")," ); } // 完全なSQLを構築 文字列 sql = prefix + suffix.substring( 0 , suffix.length() - 1 ); // 実行SQLを追加 pst.addBatch(sql); // 操作を実行 pst.executeBatch(); // トランザクションをコミットします conn.commit(); // 最後に追加されたデータをクリアします suffix = new StringBuffer(); } //ファーストクラスの接続 pst.close(); 接続を閉じる(); } キャッチ (SQLException e) { e.printStackTrace(); } // 終了時刻 Long end = new Date().getTime(); // 時間がかかります System.out.println( "1000 万件のレコードを挿入するのにかかる時間: " + (end - begin) / 1000 + " 秒" ); System.out.println("挿入が完了しました"); } } 要約する 上記は、編集者が紹介した、88秒で1000万件のデータをMySQLデータベーステーブルに挿入する操作方法です。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残してください。編集者がすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: CenterOS7 インストールおよび構成環境 jdk1.8 チュートリアル
>>: JavaScriptオフセットは、ウィンドウ内でのマウス座標の取得とモジュールのドラッグを実装します。
目次1. フロントエンドの状態管理とは何ですか? 2. ヴュークス3. バス4. ウェブストレージ序...
目次ログインビジネスプロセスログイン機能の実装要約するまず、エフェクトの実装プロセスを見てみましょう...
序文:インストール プロセスについては詳しく説明しません。問題に直接触れましょう。MySQL のリモ...
3日間さまざまな困難に遭遇した後、ようやくこの機能を実現しました。正常に実装できる方法を見つける前に...
MySQL を頻繁に使用する人は、次のような状況に遭遇する可能性があります。 1. フィールド タ...
第一に: CSSを導入する4つの方法CSS を導入する方法には、インライン スタイル、埋め込みスタイ...
目次1. IDEAはdockerプラグインをダウンロードします2. クラウドサーバーDocker 2...
今日は奇妙なネットワーク問題に遭遇しました。調査プロセスといくつかの構成状況を記録し、Linux で...
編集者:この記事では、インタラクティブデザインがブランドコミュニケーションチェーン全体で果たすべき役...
この記事では主に、Web ページ上でデスクトップ exe プログラムを呼び出す方法を紹介します。 W...
<br />では、CSS 構文を巧みに使用してテーブルを美しくする方法を見てみましょう。...
コードをコピーコードは次のとおりです。 <span style="font-size...
1. クロスドメインを実現するためにCORSレスポンスヘッダーを設定するクロスオリジンリソース共有...
特殊記号名前付きエンティティ10進数エンコード特殊記号名前付きエンティティ10進数エンコードアルファ...
文法規則 列名を選択 テーブル名1から INNER JOIN テーブル名2 ON テーブル名1.列名...