kostenloser Webspace werbefrei: lima-city


mysqldump auf pc downloaden

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    teachingtool

    teachingtool hat kostenlosen Webspace.

    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 ;)
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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.
  4. Autor dieses Themas

    teachingtool

    teachingtool hat kostenlosen Webspace.

    .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!
  5. teachingtool schrieb:
    ... Ich hätte mir das so vorgestellt: ...
    yo mey :) so einfach wird die sache aber nicht gegessen! hier hast die infrage kommende lösungen vom letzten jahr (allesamt wuchtige g'schichten).
  6. 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.

  7. tweetbox schrieb:
    ... die ganzen DEBUG Ausgaben ...,
    ... zum Test habe ich die mal mit rein, damit man sieht, ob alles richtig in der Datei ankommt ...
    yo mey! darf ich mich mal kurz zitieren?
    czibere schrieb:
    ... so einfach wird die sache aber nicht gegessen! ...

    und das hat mannigfaltige gründe, so wie (z.b.):
    - tabelle angelegt aber leer
    Notice: 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 daten
    Fatal 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 testlauf
    Warning: 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).
  8. Hallo

    ... mit einer einzigen zeile ... ist damit
    INTO OUTFILE
    gemeint ?


    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 ?

  9. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    webtausch schrieb:
    kann es sein, dass INTO OUTFILE auf lima-city deaktiviert ist ?
    Das hättest du gesehen, wenn du die Fehlermeldung dazu ausgeben würdest. Auf lima-city funktioniert
    INTO OUTFILE
    also nicht, und das aus gutem Grund.
  10. Was ist denn der Grubd dafür? Zu hohe Serverauskastung oder Sicherheitsrisiko?
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!