MySQL-table in datei speichern
dhl
- php
Hallo :)
ich muss einige mysql-tables auf einen anderen server übertragen. da der alte & der neue nur gratis gehostete sind, habe ich zwar über php zugriff auf mysql, aber nicht auf irgendwelche dateien, in denen die DB ihre daten physisch speichert... die vorgehensweise müsste wohl sein, die tables *irgendwie* in dateien zu schreiben, die dateien herunterzuladen, auf den neuen server laden und dort per script wieder in eine mysql-db zu speichern. kennt ihr scripte für sowas?
ich würde nur ungern selber so ein script schreiben, da ich befürchte, irgendwelche zeichen nicht richtig zu escapen u.ä.... die tables sind auch zu gross, um danach zu überprüfen, ob auch wirklich alles richtig übertragen wurde.
danke!
Hallo,
per phpMyAdmin geht das ohne Problem.
-View dump (schema) of table
-Structure and data [x] Send
Das solltest du wählen
So heißt das bei mir.
Sonst schreib dir selber einen Script dafür.
MFG
Andavos
Hello,
das wird dann wahrscheinlich nur über die bereitgestellte API gehen, also PERL oder PHP. Der MySQL-Daemon wird ja keine Schreibrechte auf Deine Userverzeichnisse auf dem Server besitzen. Also scheiden die MySQL-eigenen Dump-methoden aus.
Du kannst dir z.B. mit PHP die Tabellen in ein File schreiben lassen, dass dann folgenden Aufbau hat:
INSERT INTO TEST VALUES("90", NULL, "20031212172547", "00000000000000", "88", "20", "1001,2002,3003", "1", NULL, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", NULL, "Jan,Apr,Jul,Okt", "20031031075227", NULL, "0.00", "00:00:00", NULL, NULL);
Das Create-Statement bekommst Du mit "show create table tablename
;"
Und die Insert-Statements, indem Du ganz normal
"insert into tablename
values($satz);"
Zeile für Zeile schreibst. Das einzige Problem dabei sind nur die NULL-Felder.
wenn Du mit
$_rec = mysql_fetch_row($res)
die Daten aus dem Resultset geholt hast, dann kannst Du leider nicht einfach
$satz = """.implode("","",$_rec).""";
schreiben, sondern musst das mit einer Schleife zusammenbauen, da NULL nicht in Häkchen stehen darf, alle anderen Werte aber schon.
$satz ="";
foreach($_rec as $feld)
{
if(is_null($feld))
{
$satz .= "NULL,";
}
else
{
$satz .= ""$feld",";
}
}
$satz = "insert into $table values(".substr($satz,0,-1).");";
Das schreibst Du dann in die Datei weg.
Die brauchst Du dann nachher nur Zeile für Zeile als SQL-Statement auf dem anderen Server ausführen zu lassen.
Liebe Grüße aus http://www.braunschweig.de
Tom