Wie füge ich eine große Anzahl von Zeilen in MySQL ein?

8

Wie füge ich zB 100 000 Zeilen in eine MySQL-Tabelle mit einer einzigen Abfrage ein?

    
TheMagician 21.05.2009, 08:45
quelle

4 Antworten

7
%Vor%

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.

    
Jeff Ferland 21.05.2009 17:06
quelle
3

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.

    
MarkR 21.05.2009 14:54
quelle
0

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.

    
Ashok Gupta 21.05.2009 18:40
quelle
-1

Sie können nicht, soweit ich weiß. Sie benötigen eine Schleife.

    
Antony Carthy 21.05.2009 08:52
quelle

Tags und Links