Schneller Massenimport eines großen Datensatzes in MySQL

Schneller Massenimport eines großen Datensatzes in MySQL

Ich habe einen ziemlich großen Datensatz, den ich in MySQL importieren muss. Ich möchte dies so effizient wie möglich tun, da ich dies wiederholt tun muss. Gibt es Tricks dafür? Gibt es eine Methode, die effizienter ist als erweiterte INSERT-Anweisungen?

Um die Fragen im Kommentar zu beantworten: Das Originalformat ist XML, ich habe jedoch bereits einen Transformer, um es in das CSV-Format zu konvertieren. Ich arbeite mit MySQL 5.1.x und die Zieldatenbank ist InnoDB. Es gibt Beziehungen zwischen den Daten, aber ich habe keine Einschränkungen und die Daten sind in den meisten Fällen nicht sauber genug, um sie durchzusetzen.

Antwort1

VersuchenMySQL-ImportSie können direkt aus CSV-Dateien importieren.

Antwort2

Ich würde lesenMySQLHandbuch, ich dachte an INSERT AFTER, aber LOAD DATA INFILE sieht interessant aus „20-mal schneller“ …

Antwort3

Es gibt ein Open-Source-ETL-Tool namensPentaho-Datenintegrationdas über eine MySQL-Massenladeoption verfügt (unter dem experimentellen Ordner in der Entwurfsansicht). Sie können Daten auch plattformunabhängig schnell laden, indem Sie die Schritte „CSV-Eingabe“ und „Tabellenausgabe“ verwenden. Wenn Sie die Daten vor dem Laden verarbeiten müssen, können Sie diese Logik in diesem Programm kodieren.

Antwort4

Selbst ein Massen-Einfügen sollte nicht zu lange dauern. Ich habe einen neuen JIRA-Datenbankexport von 200 MB genommen und ihn in etwa 30 Sekunden in eine neue Datenbank geladen.

verwandte Informationen