MySQL fügt schnell 100 Millionen Testdaten ein

MySQL fügt schnell 100 Millionen Testdaten ein

1. Erstellen Sie eine Tabelle

1.1 Testtabelle t_user erstellen

Tabelle „t_user“ erstellen (
  `id` int(11) NICHT NULL AUTO_INCREMENT,
  `c_user_id` varchar(36) NOT NULL DEFAULT '' KOMMENTAR 'Benutzer-ID',
  `c_name` varchar(22) NOT NULL DEFAULT '' COMMENT 'Benutzername',
  `c_province_id` int(11) NOT NULL COMMENT 'Provinz-ID',
  `c_city_id` int(11) NICHT NULL KOMMENTAR 'Stadt-ID',
  `create_time` datetime NICHT NULL KOMMENTAR 'Erstellungszeit',
  Primärschlüssel (`id`),
  SCHLÜSSEL `idx_user_id` (`c_user_id`)
)ENGINE=InnoDB STANDARD-CHARSET=utf8mb4;

1.2 Erstellen einer temporären Tabelle

TABELLE ERSTELLEN `tmp_table` (
  `id` int(11) NICHT NULL,
  PRIMÄRSCHLÜSSEL (`id`)
)ENGINE=InnoDB STANDARD-CHARSET=utf8; 

2. Daten generieren

2.1 Erstellen Sie eine Datendatei mit [100 Millionen] Datensätzen mit Python (dies dauert etwas)

python -c "für i im Bereich (1, 1 + 100000000): drucken (i)" > base.txt 

2.2 Importieren Sie die generierte Datei in die temporäre Tabelle tmp_table

Finden Sie die entsprechende Datenbank

Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.
 
mysql> Test verwenden;
Datenbank geändert
mysql> Tabellen anzeigen;
+----------------+
| Tabellen_im_Test |
+----------------+
| Studentin |
| t_Benutzer |
| temporäre Tabelle |
+----------------+
3 Zeilen im Satz (0,00 Sek.)

Führen Sie den Importbefehl aus

mysql> Daten in Datei „E:/base.txt“ laden und in Tabelle „tmp_table“ ersetzen;
FEHLER 1290 (HY000): Der MySQL-Server läuft mit der Option --secure-file-priv 
Daher kann diese Anweisung nicht ausgeführt werden.
MySQL>

Beim Importieren von Daten kann ein Fehler auftreten, da secure_file_priv in MySQL standardmäßig nicht aktiviert ist (dieser Parameter wird verwendet, um die Auswirkungen von Datenimport- und -exportvorgängen, wie z. B. das Ausführen von LOAD DATA-, SELECT ... INTO OUTFILE-Anweisungen und LOAD_FILE()-Funktionen, zu begrenzen. Für diese Vorgänge muss der Benutzer über das FILE-Privileg verfügen.)

Lösung: Fügen Sie secure_file_priv = 文件所在的路徑in der MySQL-Konfigurationsdatei (my.ini oder my.conf) hinzu und starten Sie MySQL dann neu. Fügen Sie einfach den Pfad hinzu, in dem Sie Ihre eigenen Dateien platzieren möchten.

Sie können Show-Variablen wie „%secure%“ verwenden. Sehen Sie sich zunächst die Konfiguration an:

mysql> Variablen wie „%secure%“ anzeigen;
+--------------------------+----------+
| Variablenname | Wert |
+--------------------------+----------+
| secure_transport erforderlich | AUS |
| sichere_Authentifizierung | EIN |
| secure_file_priv | NULL |
+--------------------------+----------+
3 Zeilen im Satz, 1 Warnung (0,00 Sek.)

veranschaulichen:

secure_file_prive=null Beschränkt den Import und Export von mysqld secure_file_priv=/var/lib/mysql-files/ Beschränkt den Import und Export von mysqld in das Verzeichnis /var/lib/mysql-files/ secure_file_priv=' ' Beschränkt den Import und Export von mysqld nicht

Hinweis: Die Konfiguration sollte unter dem Knoten [mysqld] hinzugefügt werden. Um herauszufinden, ob der Pfad in Anführungszeichen gesetzt werden soll, können Sie Folgendes versuchen:

Starten Sie MySQL neu und überprüfen Sie zuerst die Konfiguration:

mysql> Test verwenden;
Datenbank geändert
mysql> Variablen wie „%secure%“ anzeigen;
+--------------------------+----------+
| Variablenname | Wert |
+--------------------------+----------+
| secure_transport erforderlich | AUS |
| sichere_Authentifizierung | EIN |
| secure_file_priv | E:\ |
+--------------------------+----------+
3 Zeilen im Satz, 1 Warnung (0,00 Sek.)

Und dann erneut importieren:

mysql> Daten in Datei „E:/base.txt“ laden und in Tabelle „tmp_table“ ersetzen;
Abfrage OK, 100000000 Zeilen betroffen (3 Min. 53,42 Sek.)
Datensätze: 100000000 Gelöscht: 0 Übersprungen: 0 Warnungen: 0
 
MySQL>

Milliarden von Daten, 233,42 s. Wenn Sie sich die Daten anderer Leute ansehen, ist es ungefähr dasselbe.

3. Verwenden Sie die temporäre Tabelle als Basisdaten und fügen Sie Daten in t_user ein.

Einhundert Millionen Datenpunkte dauern fast eine halbe Stunde. . . (Vielleicht wäre es schneller, es direkt von der Befehlszeile aus auszuführen …)

Aktualisieren Sie das Feld „Erstellungszeit“, um die Erstellungszeit der eingefügten Daten zufälliger zu gestalten:

mysql> UPDATE t_user SET create_time=date_add(create_time, Intervall FLOOR(1 + (RAND() * 7)) Jahr);
Abfrage OK, 100000000 Zeilen betroffen (7 Min. 24,17 Sek.)
Übereinstimmende Zeilen: 100000000 Geändert: 100000000 Warnungen: 0
 
mysql> UPDATE t_user SET create_time=date_add(create_time, Intervall FLOOR(1 + (RAND() * 7)) Jahr);
Abfrage OK, 100000000 Zeilen betroffen (8 Min. 2,49 Sek.)
Übereinstimmende Zeilen: 100000000 Geändert: 100000000 Warnungen: 0

Zu diesem Zeitpunkt ist das Einfügen von 100 Millionen Daten abgeschlossen.

4. Referenz

So erstellen Sie schnell zig Millionen Testdaten in MySQL

Der MySQL-Server läuft mit der Option --secure-file-priv

Dies ist das Ende dieses Artikels zum schnellen Einfügen von 100 Millionen Testdaten in MySQL. Weitere Informationen zum Einfügen von 100 Millionen Daten in MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Beispiele für 4 Methoden zum Einfügen großer Datenmengen in MySQL
  • So fügen Sie schnell Millionen von Testdaten in MySQL ein
  • Implementierungscode zum Einfügen von Daten aus einer Tabelle in eine andere Tabelle in MySql
  • Einfügen mehrerer Datensätze mit einer MySQL-Anweisung
  • MySQL-Batch-Einfügungsdaten-Implementierungscode
  • MySQL-Tipps: Erhöhen Sie die Geschwindigkeit beim Einfügen von Daten (Hinzufügen von Datensätzen)
  • MySQL-Abfragedaten aus einer Tabelle und Einfügen in eine andere Tabellenimplementierungsmethode
  • Lösung für das Problem des Fragezeichens (?) beim Einfügen von Daten in eine MySQL-Datenbank

<<:  Detaillierter Prozess der Bereitstellung von Docker für WSL2 in IDEA

>>:  CSS3 verwendet scale() und rotate() zum Zoomen und Drehen

Artikel empfehlen

Beispiel für den Import von Nginx-Protokollen in Elasticsearch

Die Nginx-Protokolle werden von Filebeat gesammel...

Problem beim Wechseln der Registerkarten für die Handschrift von React

Übergeordnete Datei importiere React, { useState ...

Lösung für den Fehler bei der MySQL-Remoteverbindung

Ich bin schon einmal auf das Problem gestoßen, da...

MySQL-Leistungsoptimierungs-Index-Pushdown

Index Condition Pushdown (ICP) wird in MySQL 5.6 ...

Tutorial zur Installation von VMware, Nmap und Burpsuite

Inhaltsverzeichnis VMware BurpSuite 1. Virtuelles...

Detaillierte Erklärung der grundlegenden Syntax und Datentypen von JavaScript

Inhaltsverzeichnis JavaScript importieren 1. Inte...

Die Popup-Maske der Frontend-Seite verhindert das Scrollen der Seite

Ein Problem, auf das Frontend-Entwickler häufig s...

Umfassende Erklärung zum CocosCreator Hot Update

Inhaltsverzeichnis Vorwort Was ist Hot Change Coc...

Rückgängigmachen der Anmeldung in MySQL

Konzepteinführung: Wir wissen, dass das Redo-Log ...