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

V-Bind in Vue verstehen

Inhaltsverzeichnis 1. Analyse des wichtigsten Que...

MySQL 5.7-Clusterkonfigurationsschritte

Inhaltsverzeichnis 1. Ändern Sie die Datei my.cnf...

Detaillierte Erklärung und Erweiterung von ref und reactive in Vue3

Inhaltsverzeichnis 1. Ref und reaktiv 1. reaktiv ...

Tutorial zur Installation und Konfiguration von msmtp und mutt für Raspberry Pi

1. Installieren Sie mutt sudo apt-get install mut...

So zeigen Sie die Zeitzone in MySQL an und ändern sie

Heute habe ich festgestellt, dass ein Programm ei...

Kurztipps für die Linux-Befehlszeile: So finden Sie eine Datei

Wir alle haben Dateien auf unseren Computern gesp...

Schreiben Sie einen formellen Blog mit XHTML CSS

Der vollständige Name von Blog sollte Weblog sein...

Erläuterung der CSS3-Überlaufeigenschaft

1. Überlauf Überlauf ist Überlauf (Container). We...

HTML implementiert die Funktion zur Erkennung der Eingabevervollständigung

Verwenden Sie „onInput(event)“, um festzustellen,...

Beispielcode zur Implementierung einer Upload-Komponente mit Vue3

Inhaltsverzeichnis Allgemeine Entwicklung von Upl...

Kurze Analyse von MySQL Union und Union All

In der Datenbank führen sowohl die Schlüsselwörte...

Hexadezimale Farbcodes (vollständig)

Rot und Pink und ihre Hexadezimalcodes. #990033 #...

Beispiel für die Verwendung von rem zum Ersetzen von px in einem Vue-Projekt

Inhaltsverzeichnis Werkzeug Installieren Sie das ...

Eine kurze Diskussion über die Docker-Compose-Netzwerkeinstellungen

Tutorial zur Netzwerknutzung Offizielle Website d...

So importieren Sie chinesische Daten in Navicat für SQLite in CSV

In diesem Artikel erfahren Sie zu Ihrer Informati...