2009-05-21 3 views
8

Wie füge ich beispielsweise 100 000 Zeilen in MySQL-Tabelle mit einer einzigen Abfrage?Wie füge ich eine große Anzahl von Zeilen in MySQL ein?

+0

Die offensichtliche Frage ist "von was?". Wenn die Antwort aus dem Speicher stammt, sollten Sie eine SQL-Datei sehr sorgfältig eingeben. Ansonsten verwenden Sie eine geeignete Sprache und Umgebung. –

Antwort

-1

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

3

Sie können eine Stapeleinfügung mit der INSERT-Anweisung ausführen, aber Ihre Abfrage darf nicht größer als (geringfügig kleiner als) max_allowed_packet sein.

Für 100k Zeilen, abhängig von der Größe der Zeilen, werden Sie wahrscheinlich überschreiten.

Ein Weg wäre, es in mehrere Stücke aufzuteilen. Dies ist wahrscheinlich eine gute Idee.

Alternativ können Sie LOAD DATA INFILE (oder LOAD DATA LOCAL INFILE) zum Laden von einer tabstoppgetrennten (oder anderen begrenzten) Datei verwenden. Weitere Informationen finden Sie in der Dokumentation.

LOAD DATA unterliegt nicht dem max_allowed_packet-Limit.

7
insert into $table values (1, a, b), (2, c, d), (3, e, f); 

Das führt eine Einfügung von 3 Reihen durch. Fahren Sie bei Bedarf fort, um 100.000 zu erreichen. Ich mache Blöcke von ~ 1000 auf diese Weise, wenn ich ETL arbeite.

Wenn Ihre Daten statisch in einer Datei ist, es die Umwandlung und Belastungsdaten infile verwendet, wird die beste Methode sein, aber ich vermute, Sie fragen, 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.

0

Versuchen Sie LoadFile() oder konvertieren Sie Ihre Daten in XML-Datei und verwenden Sie dann laden und extrahieren() -Funktion, um Daten in MySQL-Datenbank zu laden.

Dies ist eine Abfrage und schnellste Option,

Auch ich das gleiche mache, hatte ich Dateien, wenn 1,5 GB um Millionen von Zeilen. Ich habe beide Option in meinem Fall verwendet.

Verwandte Themen