mysqldump auf pc downloaden
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
argument
array
ausgabe
code
date
datei
datenbank
datum
fehler
maximum
null
offset
parameter
sache
setting
sicherung
tabelle
test
url
weben
-
Hallo zusammen,
Ich würde dem Administrator auf meiner Webseite gerne die Möglichkeit anbieten, eine Sicherung der MySQL Datenbank herunterzuladen. Jetzt habe ich aber keine Ahnung wie ich das anstellen sollte. Die Datenbank habe ich bei lima-city. Geht das mit mysqldump? und wenn ja wie?
Gruss aus der Schweiz ;) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mysqldump läuft doch nur auf dem eigenen Rechner. Er müsste es also bei sich installieren. Wenns im Web laufen soll, dann würde ich die MySqldumper empfehlen.
-
.Wenns im Web laufen soll, dann würde ich die Mysqldumper empfehlen.
MySQL Dumper ist mir etwas zu gross. Ich hätte mir das so vorgestellt:
Bei meiner Seite gibt es ein Button. Wenn man diesen drückt, soll eine Sicherung von der Datenbank als .sql Datei heruntergeladen werden. Diesen download kann er danach manuell archivieren.
Ich suche jetzt bereits mehrere stunden nach einer Lösung, habe jedoch bis jetzt noch kein erfolg!
Vielen dank für eure Hile! -
teachingtool schrieb:
yo mey :) so einfach wird die sache aber nicht gegessen! hier hast die infrage kommende lösungen vom letzten jahr (allesamt wuchtige g'schichten).
... Ich hätte mir das so vorgestellt: ... -
Hallo
hier mal ein Beispiel ... db_dump.sql von einer MySQL Datenbank als PHP-Script
<?php // ---------------------------------------------------------------------- header("Content-Type: text/html; charset=utf-8"); // ---------------------------------------------------------------------- $db_host = '*******'; $db_user = '*******'; $db_pass = '*******'; $db_name = '*******'; // ---------------------------------------------------------------------- $con = mysql_connect($db_host, $db_user, $db_pass); if (!$con) { print "<br />MySQL Fehler ... Server Verbindung <br />\n"; mysql_error(); exit; } $sel = mysql_select_db($db_name, $con); if (!$sel) { print "<br />MySQL Fehler ... Datenbank Auswahl <br />\n"; mysql_error(); exit; } // ---------------------------------------------------------------------- $tbl_sql = "SHOW TABLES FROM $db_name"; $result = mysql_query($tbl_sql); if (!$result) { print "MySQL Fehler ... kann Tabellen nicht auflisten <br />\n"; mysql_error(); exit; } $tbl_list = array(); while ($row = mysql_fetch_row($result)) { $tbl_list[] = $row[0]; } $tbl_anz = count($tbl_list); // ---------------------------------------------------------------------- $tbl_data = array(); $sql_data = array(); $i=0; foreach($tbl_list as $table) { $tbl_data[$table] = array(); $sql_data[$table] = array(); $sql2 = "SHOW CREATE TABLE $table"; $res2 = mysql_query($sql2) OR die('Query 2 error:<br />' .mysql_error()); while ($row2 = mysql_fetch_row($res2)) { $tbl_data[$table] = $row2[1]; } $sql3 = "SELECT * FROM $table"; $res3 = mysql_query($sql3) OR die('Query 3 error:<br />' .mysql_error()); while ($row3 = mysql_fetch_assoc($res3)) { $sql_data[$table][] = $row3; } $i++; } // ---------------------------------------------------------------------- $unixtime = time(); $dumpdate = date('Y-m-d H:i:s', $unixtime); $sql_str = ''; $sql_str .= "\n"; $sql_str .= "\n"; $sql_str .= '### ----------------------------------------------------- '."\n"; $sql_str .= '### ------ MySQL DUMP ------ '.$dumpdate.' ------ '."\n"; $sql_str .= '### ----------------------------------------------------- '."\n"; $sql_str .= "\n"; for ($x=0; $x<$tbl_anz; $x++) { foreach($tbl_data as $tkey => $tval) { $sql_str .= "\n"; $sql_str .= '### '.$tkey.' ### STRUCTURE '."\n"; $sql_str .= '### ----------------------------------------------------- '."\n"; $sql_str .= "\n"; $sql_str .= $tval."; \n"; $sql_str .= "\n"; $sql_str .= '### ------------------------------------- '."\n"; $sql_str .= "\n"; $sql_str .= "\n"; } foreach($sql_data as $skey => $sval) { $tblrows = implode(', ', array_keys($sval[0])); $sql_str .= '### '.$skey.' ### DATA '."\n"; $sql_str .= '### ----------------------------------------------------- '."\n"; $sql_str .= "\n"; $sql_str .= 'INSERT INTO '.$skey.' ('.$tblrows.') VALUES '."\n"; foreach($sval as $sitem) { $sql_str .= " ( "; foreach($sitem as $sdata) { $sdata = mysql_real_escape_string($sdata); $sdata = str_replace("'","\'",$sdata); $sql_str .= "'".$sdata."', "; } $sql_str = rtrim(trim($sql_str),','); $sql_str .= " ),\n"; } $sql_str = rtrim(trim($sql_str),','); $sql_str .= ";\n"; $sql_str .= "\n"; $sql_str .= "\n"; $sql_str .= '### ------------------------------------- '."\n"; $sql_str .= "\n"; $sql_str .= "\n"; } } // ---------------------------------------------------------------------- ## $savedate = date('Y-m-d_H-i', $unixtime); ## $savefile = 'db_dump_'.$savedate.'.sql'; $savefile = 'db_dump.sql'; $fh = fopen($savefile,"w"); fwrite($fh, $sql_str); fclose($fh); print "<br />\n"; print "<br />\n"; print "<br />Datei Download: <a href=\"".$savefile."\" target=\"\"><strong>".$savefile."</strong></a>\n"; print "<br />\n"; print "<br />\n"; // ---------------------------------------------------------------------- print "<br />\n"; print "<br />\n"; print "<br />\n"; // ------------------------------------------------------------------ print "<br /> -------- DEBUG --- <strong>\$tbl_data</strong> -------- \n"; print "<pre style=\"margin:4px; padding:4px; background:#DEDEDE; text-align:left;\">\n"; print_r($tbl_data); print "</pre>\n"; print "<br />\n"; print "<br />\n"; print "<br />\n"; // ------------------------------------------------------------------ print "<br /> -------- DEBUG --- <strong>\$sql_data</strong> -------- \n"; print "<pre style=\"margin:4px; padding:4px; background:#DEDEDE; text-align:left;\">\n"; print_r($sql_data); print "</pre>\n"; print "<br />\n"; print "<br />\n"; print "<br />\n"; // ------------------------------------------------------------------ print "<br /> -------- DEBUG --- <strong>\$sql_str</strong> -------- \n"; print "<pre style=\"margin:4px; padding:4px; background:#DEDEDE; text-align:left;\">\n"; print_r($sql_str); print "</pre>\n"; print "<br />\n"; print "<br />\n"; print "<br />\n"; // ---------------------------------------------------------------------- ?>
Man muss natürlich (oben) seine MySQL Zugangsdaten eingeben (host, user, pass, name)
und man könnte den Speicherort (Verzeichnis) und Dateiname von db_dump.sql noch anpassen
oder anstatt Datei als Link zum Download geht auch direkt als Download an den Browser senden,
aber das ist dann fein-Tuning :)
Das Script ist noch sehr einfach, man könnte noch viel dazu machen, wie nur mit Prefix, Charset, etc.
auch sollte es noch eine authentifiezierung geben, als Aufruf nur für berechtigte (Login / Passwort)
die ganzen DEBUG Ausgaben (ganz unten) kann man bei Verwendung dann ja auch weg lasen,
aber zum Test habe ich die mal mit rein, damit man sieht, ob alles richtig in der Datei ankommt.
PS: ... bei großen Daten-Mengen kann es aber Probleme geben, die .sql Datei zu importieren
wenn es zu viele INSERTs sind bzw. die Datei zu groß ist.
-
tweetbox schrieb:
yo mey! darf ich mich mal kurz zitieren?
... die ganzen DEBUG Ausgaben ...,
... zum Test habe ich die mal mit rein, damit man sieht, ob alles richtig in der Datei ankommt ...czibere schrieb:
... so einfach wird die sache aber nicht gegessen! ...
und das hat mannigfaltige gründe, so wie (z.b.):
- tabelle angelegt aber leerNotice: Undefined offset: 0 in /var/www/html/test/db_dump.php on line 116
(ja, mit db_dump.php ist dein prog gemeint und die obige angelegenheit ist von dir nicht ausprogrammiert [wie ein paar andere auch noch])
dann noch:
- tabelle hat zu viele datenFatal error: Maximum execution time of XX seconds exceeded in /var/www/html/test/db_dump.php on line 132
und und und ... und mal hier nicht ganz zu übertreiben, hier eine etwas erweiterte 'ausgabe' nach einem testlaufWarning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /var/www/html/test/db_dump.php on line 86
Notice: Undefined offset: 0 in /var/www/html/test/db_dump.php on line 116
Warning: array_keys() expects parameter 1 to be array, null given in /var/www/html/test/db_dump.php on line 116
Warning: implode(): Invalid arguments passed in /var/www/html/test/db_dump.php on line 116
Notice: Undefined offset: 0 in /var/www/html/test/db_dump.php on line 116
... das wiederholt sich jetzt so oft, wie die daten in der tabelle es erzwingen! ...
Warning: array_keys() expects parameter 1 to be array, null given in /var/www/html/test/db_dump.php on line 116
Warning: implode(): Invalid arguments passed in /var/www/html/test/db_dump.php on line 116
Notice: Undefined offset: 0 in /var/www/html/test/db_dump.php on line 116
Warning: array_keys() expects parameter 1 to be array, null given in /var/www/html/test/db_dump.php on line 116
Warning: implode(): Invalid arguments passed in /var/www/html/test/db_dump.php on line 116
Notice: Undefined offset: 0 in /var/www/html/test/db_dump.php on line 116
Warning: array_keys() expects parameter 1 to be array, null given in /var/www/html/test/db_dump.php on line 116
Warning: implode(): Invalid arguments passed in /var/www/html/test/db_dump.php on line 116
Notice: Undefined offset: 0 in /var/www/html/test/db_dump.php on line 116
Warning: array_keys() expects parameter 1 to be array, null given in /var/www/html/test/db_dump.php on line 116
Warning: implode(): Invalid arguments passed in /var/www/html/test/db_dump.php on line 116
Fatal error: Maximum execution time of 0 seconds exceeded in /var/www/html/test/db_dump.php on line 132
wie du sehen kannst, da wiederholen sich zeilennummern 'unendlich'. auch dei gründe kannst du sehen! also warum progst du, progt man sowas !? all das gibt es fertig (aber auch nicht ganz ohne fehler ;)
nur dashalb habe ich mich oben selbst zitiert. weil es wahr ist ;)
was man aber machen kann ist sehr einfach:
- OS (das eigene) richtig kennenlernen;
- (L)AMP aufsetzen (man arbeitet ja damit ;);
- MySQL ordentlich lernen;
und als ergebnis: mit einer einzigen zeile die daten von lima abfragen und gleich auf die eigene festplatte speichern
ja, so einfach, aber nicht mit php - sondern mit lernen( - igittttt! :o). -
Hallo
... mit einer einzigen zeile ... ist damit
gemeint ?INTO OUTFILE
habe das auf lima-city ausprobiert, aber es funktioniert leider nicht
ich bekomme nur die Meldung: "unable to move data"
foreach($tbl_list as $table) { $bFile = '_db_'.$table.'.sql'; $query = "SELECT * INTO OUTFILE '".$bFile."' FROM ".$table.""; $result = mysql_query($query) or die("unable to move data"); print "<br />".$bFile."\n"; }
kann es sein, dass INTO OUTFILE auf lima-city deaktiviert ist ?
-
webtausch schrieb:
Das hättest du gesehen, wenn du die Fehlermeldung dazu ausgeben würdest. Auf lima-city funktioniert
kann es sein, dass INTO OUTFILE auf lima-city deaktiviert ist ?
also nicht, und das aus gutem Grund.INTO OUTFILE
-
Was ist denn der Grubd dafür? Zu hohe Serverauskastung oder Sicherheitsrisiko?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage