Die von mir verwendete Datenbank ist MySQL Datenbank Version 5.7 Bereiten Sie die Datenbanktabelle zunächst selbst vor Tatsächlich sind beim Einfügen von 10 Millionen Daten einige Probleme aufgetreten. Jetzt werde ich diese zuerst lösen. Zu Beginn trat beim Einfügen von 1 Million Daten ein Fehler auf. Die Konsoleninformationen lauten wie folgt:
Der obige Fehler tritt auf, weil die max_allowed_packet-Konfiguration der Datenbanktabelle nicht groß genug ist, da der Standardwert 4 M beträgt. Später habe ich ihn auf 100 M angepasst und es wurde kein Fehler gemeldet. setze global max_allowed_packet = 100*1024*1024* Denken Sie daran, dass Sie sich nach dem Einstellen erneut bei der Datenbank anmelden müssen, um den eingestellten Wert anzuzeigen VARIABLEN anzeigen wie '%max_allowed_packet%' Der Code lautet wie folgt: Packungsbeilage; importiere java.sql.Connection; importiere java.sql.DriverManager; importiere java.sql.SQLException; importiere java.util.Date; importiere com.mysql.jdbc.PreparedStatement; öffentliche Klasse InsertTest { public static void main(String[] args) throws ClassNotFoundException, SQLException { endgültige String-URL = "jdbc:mysql://127.0.0.1/teacher"; endgültiger String-Name = "com.mysql.jdbc.Driver"; endgültiger String-Benutzer = "root"; endgültiges String-Passwort = "123456"; Verbindung conn = null; Class.forName(name); //Verbindungstyp angeben conn = DriverManager.getConnection(url, user, password); //Verbindung abrufen if (conn!= null ) { System.out.println("Verbindung erfolgreich hergestellt"); einfügen(conn); } anders { System.out.println("Verbindung konnte nicht hergestellt werden"); } } öffentliche statische Leere einfügen (Verbindung conn) { // Startzeit Long begin = new Date().getTime(); // SQL-Präfix String-Präfix = "INSERT INTO t_teacher (id,t_name,t_password,sex,description,pic_url,school_name,registrate,remark) VALUES "; versuchen { // SQL-Suffix speichern StringBuffer suffix = new StringBuffer(); // Transaktion auf Nicht-Automatisches Commit setzen conn.setAutoCommit( false ); // PST ist besser als ST PreparedStatement pst = (PreparedStatement) conn.prepareStatement( "" ); //Anweisung zur Ausführung vorbereiten// Äußere Schleife, Gesamtzahl der festgeschriebenen Transaktionen für (int i = 1; i <= 100; i++) { Suffix = neuer StringBuffer(); // j-ter Übermittlungsschritt für (int j = 1; j <= 100000; j++) { // SQL-Suffix erstellen suffix.append( "('" + uutil.UUIDUtil.getUUID()+ "','" +i*j+ "','123456'" + ",'Männlich'" + ",'Lehrer'" + ",'www.bbk.com'" + ",'XX Universität'" + ",'" + "2016-08-12 14:43:26" + "','Hinweis'" + ")," ); } // Vollständiges SQL erstellen Zeichenfolge SQL = Präfix + Suffix.Teilzeichenfolge (0, Suffix.Länge() – 1); //Ausführungs-SQL hinzufügen pst.addBatch(sql); // Operationen ausführen pst.executeBatch(); // Transaktion festschreiben conn.commit(); // Zuletzt hinzugefügte Daten löschen suffix = new StringBuffer(); } //Erstklassige Verbindung pst.close(); Verbindung schließen(); } Fang (SQLException e) { e.printStackTrace(); } // Endzeit Langes Ende = neues Date().getTime(); // Zeitaufwendig System.out.println( "Zeit, die zum Einfügen von 10 Millionen Datensätzen benötigt wird: " + (end - begin) / 1000 + " s" ); System.out.println("Einfügen abgeschlossen"); } } Zusammenfassen Oben ist die vom Editor eingeführte Operationsmethode, um 10 Millionen Daten in 88 Sekunden in die MySQL-Datenbanktabelle einzufügen. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: ThingJS-Partikeleffekte, um Regen- und Schneeeffekte mit einem Klick zu erzielen
Ich habe vor Kurzem die 34 goldenen Regeln von Yah...
Beim Entwurf von Tabellenstrukturen gehören numer...
Vorwort Eines Tages wurde ich plötzlich nach der ...
Mac-Knoten löschen und neu installieren löschen K...
Überblick In einer Datenbank wird ein Index verwe...
Vorwort Mit der Funktion count werden die Datensä...
Wie kann festgestellt werden, ob das aktuelle Lin...
Bei täglichen Entwicklungsaufgaben verwenden wir ...
Szenarioanforderungen 1. Wir können die Skriptfun...
Ich habe vor Kurzem eine Website mit Anwaltsempfe...
Ich bin ein SQL-Anfänger und dachte, die Installa...
Inhaltsverzeichnis Vorwort Frage Prinzip prüfen V...
Inhaltsverzeichnis 1. Docker installieren 2. Zieh...
Inhaltsverzeichnis Vorwort 1. Verwenden Sie $attr...
MySQL ist heute die Datenbank, die von den meiste...