dedlfix: ich möchte eine sehr grosse CSV Datei in eine MYSQL Datenbank einspielen

Beitrag lesen

Tach!

Ich habe eine CSV Datenbank die ich gerne ich eine mysql Datenbank einspeisen möchte. Am liebsten über phpmyadmin.

Die Datei hat 10 Millionen Zeilen und ist 890 MB Groß.

Das ist aus zweierlei Gründen problematisch. Zum einen hat PHP eine Beschränkung der Upload-Größe, zum anderen hat auch der Webserver eine. Wenn du diese beiden nicht konfigurieren kannst, bist du auf die Maximalgröße beschränkt, was aber nur für die Transfergröße relevant ist.

Wenn du also das Transfervolumen verringern kannst, und damit unter die Grenzwerte kommst, bist du schon einen Schritt weiter. Eine Möglichkeit, das zu erreichen, ist die Datei zippen. Wenn die Daten gut komprimierbar sind, lässt sich eine Menge Größe einsparen.

phpMyAdmin kann mit gezippten Dateien arbeiten. Die nächste Beschränkung könnte eine Quota im Dateisystem sein. Da müsste mindestens die Menge an Platz verfügbar sein, wie die komprimierte und die unkomprimierte Version gemeinsam belegen.

Bi jetzt habe ich schon versucht die Datei in mehrere Teile zu zerlegen,

Das wäre die einzige Möglichkeit, wenn die Größe der limitierende Faktor ist.

Eine Alternative ohne Transferbeschränkung wäre, wenn du Shellzugriff hast. MySQL hat Kommandozeilen-Tools, mit denenn man importieren kann (sollte zumindest, ich hab das nie mit CSV probiert).

aber das bekomme ich auch nicht hin.

Woran genau scheitert es? Das erste wäre, einen Texteditor zu finden, der mit der Dateigröße umgehen kann.

Das CSV-Format ist recht einfach. Die Daten können am Zeilenende getrennt werden. Beachte aber Zeilenenden, die innerhalb von Feldern auftreten können.

Dae einzige, worauf man noch achten muss, ist die erste Zeile. Da können die Feldnamen drinstehen. Die Zeile ist aber keine Pflicht. Ohne sie muss aber beim Import die Reihenfolge der Felder mit den Datenbankfeldern in Übereinstimmung gebracht werden.

Wenn du eine solche Feldnamenzeile hast, solltest du sie auch bei jedem Teilstück als erste Zeile einfügen. Damit sollte der Import prinzipiell gehen.

dedlfix.