MySQL-Datenbank per PHP-Script übertragen
*jiriki*
- datenbank
Hallo Leute,
ich hab hier lokal ne MySQL-Datenbank und möchte nun nen PHP-Script erstellen, mit dem ich die Datenbank auf meinen externen Webserver übertrage.
Ich hab jetzt einige Zeit im Web gestöbert, aber nichts brauchbares gefunden, außer dass ich weiss, dass man auf jeden Fall MySQL-Backups per PHP realisieren kann.
Hat jmd sowas schonmal gemacht? Ich wäre für jede Hilfe dankbar.
Gruß, *jiriki*
Sup!
Hmmm... Du lässt die DB einen SQL-Dump machen, der wird dann gezippt und an den anderen Server übertragen, dort nimmt ein anderes Skript den Dump, entzippt ihn und spielt ihn in die DB dort ein?
Gruesse,
Bio
Hello,
Hmmm... Du lässt die DB einen SQL-Dump machen, der wird dann gezippt und an den anderen Server übertragen, dort nimmt ein anderes Skript den Dump, entzippt ihn und spielt ihn in die DB dort ein?
Dieser Tipp wird Dir aber ggf. nichts nützen, denn der DumpFile bleibt i.d.R dort, wo auch ein Outfile bleiben würde und da kommst Du dann ggf. nicht ran.
Du wirst also wahrscheinlich nur die Chance haben, mittels PHP eine Satzorientierte Datei anzulegen, die dann acuh mit anderen Systmen (z.B. Access) lokal wieder verarbeitet werden kann und die Du in Deinem Webspace ablegen kannst. Von dort kannst Du sie dann ja herunterladen.
Wieviele Daten enthalten denn Deine MySQL-Tabellen?
Das Problem dabei ist nur, dass die Datenbank für die Dauer des Backups gesperrt werden muss, damit später keine Brüche in der refenziellen Integrität bei den gesicherten Daten auftreten.
Da PHP nur sehr umständlich selbstdefinierte Datenstrukturen unterstützt, wird das Kopieren in eine eigne Low-Leve-Datei vermutlich "einfach" nur im Textformat gehen, also alle Felder werden als human readable charcters gespeichert, also Zahlen auch nicht im Binärformat, sondern als ASCII-Ziffern '1234567890'
Du benötigst Dafür das Tabellenformat der MySQL-Tabellen, also die Feldnamen und Feldlängen. Als Feldlänge gilt dabei immer die maximal mögliche des Datentyps, bei VarChar also 256 Zeichen.
Das Format bekommst Du mit
$sql = "show columns from $table";
$ret = mysql_query($sql, $con);
dann sperrst Du die Tabellen mit
$sql = "Lock table AUTO read, FARBE read, HALTER read";
wobei AUTO, FARBE und HALTER natürlich nur meine Tabellennamen in der Übungsdatenbank sind ;-)
Wenn Du dann später fertig bist, solltest Du der Ordnung halber mit einem
$sql = "Unlock tables";
die Tabellen wieder freigeben, obwohl das eigentlich bei Scriptende durch Verfall des Connection-Handles auf die DB automatisch passieren sollte.
Dann holst Du die Datensätze einfach in Portionen ab mit
"select * from $table limit $offset, $anzahl oder by ID";
Wenn es nicht soviele sind, benötigst du die Limit-Klausel nicht.
Mit Hilfe der Funktion
$rec = strpad($feld1,$fieldlen1,'0') +
strpad($feld2,$fieldlen2,'0') +
strpad($feld3,$fieldlen3,'0');
kannst Du Dir dann einen Low-Level-Datensatz nach dem anderen zusammenbauen und mit fwrite() einfach in eine Low-Level-Datei speichern. Auf Diese Weise könnte man auch leicht ein dBase-Format erzeugen, wenn Dir das was nützt.
Natürlich kann man das alles mit Arrays und foreach() automatisieren. Dafür haben wir unds ja mit show columns die Daten beschafft.
Die kannst Du dann runterladen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello,
sorry, hatte die da unten was geschreiben, aber war die ganez Zeit der Meinung, das ich hier obenn gelesen hätte:
"wie sichere ich meine Daten aus der DB auf dem Webspace rüber zu meinem lokalen PC?"
Naja, macht ja nix, die Aufgabe kommt doch auch noch auf Dich zu.
Liebe Grüße aus http://www.braunschweig.de
Tom