Wie füge ich zB 100 000 Zeilen in eine MySQL-Tabelle mit einer einzigen Abfrage ein?
Dies führt eine Einfügung von 3 Zeilen durch. Fahren Sie bei Bedarf fort, um 100.000 zu erreichen. Ich mache Blöcke von ~ 1000 auf diese Weise, wenn ETL arbeiten.
Wenn sich Ihre Daten statisch in einer Datei befinden, ist es die beste Methode, sie zu transformieren und Ladedaten-Infile zu verwenden, aber ich nehme an, Sie fragen das, weil Sie etwas Ähnliches tun.
Beachten Sie auch, was jemand anderes über die max_allowed_packet-Größe gesagt hat, die die Länge Ihrer Abfrage begrenzt.
Sie können eine Stapeleinfügung mit der INSERT-Anweisung durchführen, aber Ihre Abfrage darf nicht größer als (geringfügig kleiner als) max_allowed_packet sein.
Bei 100k-Zeilen, abhängig von der Größe der Zeilen, werden Sie diese wahrscheinlich überschreiten.
Eine Möglichkeit wäre, es in mehrere Teile aufzuteilen. Das ist wahrscheinlich eine gute Idee.
Alternativ können Sie LOAD DATA INFILE (oder LOAD DATA LOCAL INFILE) verwenden, um von einer durch Tabstopps getrennten (oder anderen begrenzten) Datei zu laden. Weitere Informationen finden Sie in der Dokumentation.
LOAD DATA unterliegt nicht dem max_allowed_packet-Limit.
Versuchen Sie LoadFile () zu verwenden Oder konvertieren Sie Ihre Daten in eine XML-Datei und verwenden Sie dann die Funktion Load and Extract (), um Daten in die MySQL-Datenbank zu laden.
Dies ist die eine Abfrage und schnellste Option,
Auch ich mache das gleiche, ich hatte Dateien, wenn 1,5 GB um Millionen von Zeilen. Ich habe beide Option in meinem Fall verwendet.
Sie können nicht, soweit ich weiß. Sie benötigen eine Schleife.