MySQL Datenbank via PHP exportieren
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
backup
befehl
beschrieb
counter
csv
date
datei
element
error
fehler
format
multiple
not
null
number
result
show
spalten
tabelle
table
-
Hallo
Ich suche ein ganz einfaches PHP Script mit dem ich meine MySQL Datenbank exportieren kann. (komplette Datenbank)
Es gibt zwar verschiedene tools, diese sind mir aber alle zu umfangreich.
F?r eine schnelle Hilfe w?re ich sehr dankbar.
MFG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hiho hofer!
Das ist nicht ganz so einfach. Ich habe noch nicht nach fertigen Scripts gegoogelt. Mal sehen, ob ich sp?ter noch was finde. Jetzt erstmal meine theoretische L?sung:
1. Du musst eine Liste s?mtlicher Tabellen in der Datenbank erstellen. Das geht IMHO mit dem mySQL-Befehl "SHOW TABLES FROM DATABASE".
2. Diese Liste klapperst du dann Tabelle f?r Tabelle ab. F?r jede Tabelle musst du eine Tabellenbeschreibung erstellen. MySQL hat daf?r den Befehl "SHOW CREATE TABLE" (http://dev.mysql.com/doc/mysql/de/show-create-table.html). Der erzeugt laut Online-Doku einen String, der sich sp?ter prima in einen "CREATE TABLE"-Befehl umwandeln l?sst.
3. Mit "SHOW * FROM tabelle" holst du dir alle Eintr?ge der jeweiligen Tabelle. Die kannst du theoretisch in irgendwas Speicherbares umwandeln, z.B. eine CSV-Datei.
So stelle ich mir das jedenfalls vor. Es gibt auch CSV-Exportfunktionen in der Datenbank-Schnittstelle adodb. Dort wird auch beschrieben, wie man Tabellen in CSV-Dateien exportiert.
MfG
alopex -
Mit diesem Script sollte das funktionieren!
Damit das Script richtig l?uft, musst Du einen Ordner namens "backup" erstellen!
Die Daten werden in .txt-Files abgespeichert; das Format sieht wie folgt aus:
bla | muh | m?????ep
Dabei steht das "|" f?r einen Spaltentrenner!
error_reporting(E_ALL); include("connect.inc.php"); $db = "DeineDatenbank"; $result = mysql_list_tables($db); $counter = 0; $tables = array(); while($row = mysql_fetch_array($result)) { print("Tabelle: ". $row[0] ."<br />"); $tables[] = $row[0]; $counter++; } print("<br /><br />"); print_r($tables); print("<br /><br />"); for($i = 0; $i <= $counter; $i++) { // ------------------------------------ $sql = "SELECT * FROM ". $tables[$i]; $result = mysql_query($sql); // ------------------------------------ if($result === FALSE) { print("Fehler: Die Datenbankabfrage schlug fehl!<br />Mysql-Error: ". mysql_error() ."<br />Mysql-Error-Number: ". mysql_errno() ." <br /><br />"); } else { // ------------------------------------ $datum = date("m-d-Y-H:i:s"); $pfad = "backup/". $datum ."-". $tables[$i] ."-". $db .".txt"; // ------------------------------------ $handle = fopen($pfad, "w"); while($row = mysql_fetch_assoc($result)) { /* print_r($row); pritn("<br /><br />"); */ $str = implode(" | ", $row); $str .= "\r\n"; fwrite($handle, $str); } fclose($handle); } }
-
@compactdisc
dein script funktioniert super, aber ich m?chte eine sql datei exportieren, mit den sql befehlen, sowie man das auch mit PHPMyAdmin machen kann, nur das ganze soll halt via PHP funktionieren. -
Ich hab's, ich hab's !
Mit folgendem Code kann man seine gesamten Daten in einer Datenbank in Textdateien speichern.
Format:
Datei: [Monat]-[Tag]-[Jahr]-[Stunde]-[Minuten]-[Sekunden]-[Tabellenname]-[Datenbankname].txt
Inhalt:
INSERT INTO <tabelle> (Spalten) VALUES (Werte)
error_reporting(E_ALL); include("connect.inc.php"); $db = "DeineDatenbank"; $result = mysql_list_tables($db); $counter = 0; $tables = array(); while($row = mysql_fetch_array($result)) { print("Tabelle: ". $row[0] ."<br />"); $tables[] = $row[0]; $counter++; } print("<br /><br />"); print_r($tables); print("<br /><br />"); for($i = 0; $i < $counter; $i++) { // ------------------------------------ $sql = "SELECT * FROM ". $tables[$i]; $result = mysql_query($sql); // ------------------------------------ if($result === FALSE) { print("Fehler: Die Datenbankabfrage schlug fehl!<br />Mysql-Error: ". mysql_error() ."<br />Mysql-Error-Number: ". mysql_errno() ." <br /><br />"); } else { // ------------------------------------ $datum = date("m-d-Y-H:i:s"); $pfad = "backup/". $datum ."-". $tables[$i] ."-". $db .".txt"; // ------------------------------------ $handle = fopen($pfad, "w"); while($row = mysql_fetch_assoc($result)) { $werte = array(); $spalte = array(); foreach($row as $key => $val) { $werte[] = "'". $val ."'"; $spalte[] = $key; } // print_r($werte); // print("<br /><br />"); $values = implode(", ", $werte); $column = implode(", ", $spalte); // print($values); // print("<br /><br />"); $str = "INSERT INTO ". $tables[$i] ." (". $column .") VALUES (". $values .")\r\n"; fwrite($handle, $str); } fclose($handle); } }
-
das ist ja super, ist es auch m?glich die Struktur zu exportieren. Wenn ja, wie m?sste das script dann aussehen?
zb
CREATE TABLE `bw_homepage` (
`id` int(50) NOT NULL auto_increment,
`anzeigen` varchar(50) NOT NULL default '',
`name` varchar(200) NOT NULL default '',
`datei` varchar(200) NOT NULL default '',
`bild` varchar(200) NOT NULL default '',
`sidebar` varchar(50) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=17 ; -
Ich habe das auch mal versucht zu schreiben, allerdings wird der Typ der Spalte immer mit Blob beschrieben, kA, woran das liegt ...
Hier mal das Script:
error_reporting(E_ALL); include("connect.inc.php"); // ------------------- $db = "DeineDatenbank"; mysql_select_db($db); // ------------------- $result = mysql_list_tables($db); $counter = 0; $tables = array(); while($row = mysql_fetch_array($result)) { print("Tabelle: ". $row[0] ."<br />"); $tables[] = $row[0]; $counter++; } print("<br /><br />"); print_r($tables); print("<br /><br />"); for($i = 0; $i < $counter; $i++) { // ------------------------------------ $sql = "SELECT * FROM ". $tables[$i]; $result = mysql_query($sql); // ------------------------------------ if($result === FALSE) { print("Fehler: Die Datenbankabfrage schlug fehl!<br />Mysql-Error: ". mysql_error() ."<br />Mysql-Error-Number: ". mysql_errno() ." <br /><br />"); } else { // ------------------- $primary = array(); $unique = array(); $multiple = array(); // ------------------- $create = "CREATE TABLE `". $tables[$i] ."` (\r\n"; for($b=0; $b < mysql_num_fields($result); $b++) { $meta = mysql_fetch_field($result, $b); if(!$meta) { print("Keine Meta-Daten vorhanden ...<br />"); } // ------------------- if($meta->name) { $create .= "`". $meta->name ."` "; } if($meta->type && $meta->max_length) { $create .= $meta->type ."(". $meta->max_length .") "; } else { if($meta->type && !$meta->max_length) { $create .= $meta->type ." "; } else { if($meta->type == TRUE) { $create .= $meta->type ." "; } if($meta->blob == 1) { $create .= "blob "; } } } if($meta->unsigned) { $create .= "unsigned "; } if($meta->zerofill) { $create .= "UNSIGNED ZEROFILL "; } if($meta->not_null) { $create .= "NOT NULL "; } if($meta->primary_key == 1) { $primary[] = $meta->name; } if($meta->unique_key == 1) { $unique[] = $meta->name; } if($meta->multiple_key == 1) { $multiple[] = $meta->name; } $create .= ",\r\n"; $create .= "<br />"; } $temp = array(); if(count($primary) > 0) { foreach($primary as $element) { $temp[] = "`". $element ."`"; } $prim = implode(", ", $temp); $create .= "PRIMARY KEY (". $prim .")"; $create .= "\r\n"; } if(count($unique) > 0) { foreach($unique as $element) { $temp[] = "`". $element ."`"; } $uniq = implode(", ", $temp); $create .= "UNIQUE KEY ". $uniq ." (". $uniq .")"; $create .= "\r\n"; } } print($create ."<br /><br />"); }
Beitrag ge?ndert am 29.07.2005 10:40 von compactdisc -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage