Matti Maekitalo: Sehr große Datenmenge in eine Datenbank schreiben

Beitrag lesen

Tach auch.

ich habe foldendes Problem.
Ich ziehe eine sehr große Menge an Daten aus einer Informix Datenbank. Diese möchte ich in eine MySQL Datenbank schreiben.

Zuerst hatte ich eine Schleife die aus 3 verschiedenen Tabellen die erforderlichen Daten für einen Eintrag ausliest und dann diesen "einen" Eintrag per Insert in meine MySql DB schreibt.Dann holt er den nächsten aus der Informix DB und schreibt diesen wieder in die My SQL DB, usw...

Jetzt habe ich es so das er mir mit jedem einzelnen Datensatz einen String zusammenbaut der wenn er komplett ist, alle Daten mit einem einzigen Insert in die MySql DB schreibt.

Das ist jetzt wesentlich schneller reicht aber trotzdem nicht aus wenn ich ca. 8000 Datensätze hab, bekomme ich ein Timeout Fehler im Browser.

Das schreit förmlich nach Prepared-Statements. Die gibts aber bei mysql nur im verbesserten MySQL-Interface (genannt mysqli). Wenn du darauf Zugriff hast, nutze dies!
http://de.php.net/manual/de/function.mysqli-prepare.php

Bei prepared-Statements wird dein MySQL-Insert-Statement quasi vorkompiliert, die Werte setzt du erst nachträglich ein. So kannst du ein gleiches Statement mit unterschiedlichen Werten immer wieder verwenden. Und (als Bonus obendrauf) werden deine Werte automatisch gequotet.

Bis die Tage,
Matti