MySql Denkanstösse

Mirko D

Erfahrenes Mitglied
Hi,

ich hab da mal ein kleines Problem! Geht es das ich eine Datenbank via PHP komma getrennt abspeichern kann. Also mal so als Verstädniss. Ich habe vor eine Online Datenbank komma getrennt zu exportieren, damit ich sie wieder in meine Access DB reinbekomme.

Danke für jede Hilfe oder Denkanstössen.

Gruß Mirko
 
Wie du die Daten exportierst ist der Datenbank wurst ;)
Aber phpMyAdmin beispielsweise unterstütz neben vielen anderen Exportformaten auch CSV, sprich du müsstest dir das nicht extra coden....
 
Ja aber ich möchte das ja alles automatisieren.
Also ich würde gerne immer zu einer bestimmten Zeit mein Script via Crontab starten und mir datei dann zuschicken lassen. Wenn du diesen Befehl für PHPMyAdmin kennst dann bitte her damit :-) . Andernfalls benötige ich halt einen Anstoss der meine Wünsche ins rollen bringt.

:rolleyes:

Trotzdem danke für die Antwort

Gruß Mirko
 
Wir hatten hier letztens in nem Thread ein Backupscript, welches die Datenbank phpMyAdmin konform auslesen und sichern kann.

Leider finde ich den Thread so spontan nicht, sollte es bis heute Abend keine Lösung geben, kann ich dir das nochmal raussuchen, irgendwo habe ich das zu Haus gespeichert.

Grüße,
Lars
 
Super, weil Meister Google hat auch keine Infos für mich. Ich werd mich mal weiter bemühen!

Gruß Mirko
 
alternativ könntest du auch einfach die Quellen von phpMyAdmin durchsuchen. In der Version die ich hier habe (total veraltet) liegt unter libraries die Datei build_dump.lib.php ... In dieser sind einige Funktionen zum exportieren von Datenbanken, unter anderem auch eine Funktion zum erstellen von komma separierten Listen.

Ciao, Jörg
 
PHP:
$db_name=$_db['database'];

$database=$_db['database'];
$zaehler=0;
$file_name = $data['path'].$database."_".date("Y-m-d_H-i").".sql";

$text  = "# --------------------------------------------------------\r\n";
$text .= "# DATENBANK DUMP\r\n";
$text .= "# Host: ".$db_host."\r\n";
$text .= "# Erstellungszeit: ".date("d. F Y")." um ".date("H:i")."\r\n";
$text .= "# Server Betriebssystem: ".php_uname()."\r\n";
$text .= "# MySQL-Version: ".mysql_get_server_info()."\r\n";
$text .= "# PHP-Version: ".phpversion()."\r\n";
$text .= "# Datenbank: `$database`\r\n";
$text .= "# --------------------------------------------------------\r\n\r\n";

$fd = fopen($file_name,"a+");
fwrite($fd, $text);
fclose($fd);

$c = 0;
$result2 = @mysql_list_tables($database);

for ($i = 0; $i < @mysql_num_rows($result2); $i++)
{
	$tabelle = @mysql_tablename($result2,$i);
	if ($tabelle != "") {
		$tbl_array[$c] = @mysql_tablename($result2,$i);
		$c++;
		$zaehler++;
	}

}

for ($y = 0; $y < $c; $y++) {
	$tabelle = $tbl_array[$y];

	$def="";
	unset($index);
	$data="";
	
	$def .= "DROP TABLE IF EXISTS $tabelle;\r\n";
	$def .= "CREATE TABLE $tabelle (\r\n";
	$result3 = @mysql_db_query($database, "SHOW FIELDS FROM $tabelle");
	while ($row = @mysql_fetch_array($result3)) {
		$def .= "    ".$row["Field"]." ".$row["Type"];
		if ($row["Default"] != "") { $def .= " DEFAULT '".$row["Default"]."'"; }
		if ($row["Null"] != "YES") { $def .= " NOT NULL"; }
		if ($row["Extra"] != "") { $def .= " ".$row["Extra"]; }
		$def .= ",\r\n";
	}
	$def = ereg_replace(",\r\n$", "", $def);
	$result3 = @mysql_db_query($database, "SHOW KEYS FROM $tabelle");
	while ($row = @mysql_fetch_array($result3)) {
		$kname = $row["Key_name"];
		if (($kname != "PRIMARY") && ($row["Non_unique"] == 0)) { $kname = "UNIQUE|".$kname; }
		if (!isset($index[$kname])) { $index[$kname] = array(); }
		$index[$kname][] = $row["Column_name"];
	}
	while (list($xy, $columns) = each($index)) {
		$def .= ",\r\n";
		if ($xy == "PRIMARY") $def .= "    PRIMARY KEY (".implode($columns, ", ").")";
		else if (substr($xy,0,6) == "UNIQUE") $def .= "    UNIQUE ".substr($xy,7)." (".implode($columns, ", ").")";
		else $def .= "    KEY $xy (".implode($columns, ", ").")";
	}
	$def .= "\r\n);\r\n\r\n";

	$db = @mysql_select_db($database);
	$tabelle = "".$tabelle;
	$text = "#\r\n# Daten für Tabelle `$tabelle`\r\n#\r\n\r\n";

	$fd = fopen($file_name,"a+");
	fwrite($fd, $text.$def);
	fclose($fd);

	$def="";
	unset($index);
	$data="";
	
	if ($tabelle > "") {
		$ergebnis[] = @mysql_select_db($database);
		$result = @mysql_query("SELECT * FROM $tabelle");
		$anzahl = @mysql_num_rows($result);
		$spaltenzahl = @mysql_num_fields($result);
		for ($i = 0; $i < $anzahl; $i++) {
			$zeile = @mysql_fetch_array($result);
			$data .= "INSERT INTO $tabelle (";
			for ($spalte = 0; $spalte < $spaltenzahl; $spalte++) {
				$feldname = @mysql_field_name($result, $spalte);
				if ($spalte == ($spaltenzahl - 1)) {
					$data.= $feldname;
				} else {
					$data.= $feldname.",";
				}
			}
			$data .= ") VALUES (";
			for ($k=0;$k < $spaltenzahl;$k++) {
				if ($k == ($spaltenzahl - 1)) {
					$data .= "'".addslashes($zeile[$k])."'";
				} else {
					$data .= "'".addslashes($zeile[$k])."',";
			}
			}
			$data .= ");\r\n";
		}
		$data .= "\r\n";
	} else {
		$ergebnis[] = "Keine Tabelle übergeben";
	}
	$fd = fopen($file_name,"a+");
	fwrite($fd, $data);
	fclose($fd);
}

So sieht das bei mir aus...kannste ja mal ausprobieren, die Datenbank sollte aber hiermit gesichert werden...

Es muss halt noch die MySQL Verbindung hgergestellt und anschließend getrennt werden... ;)
 
Zuletzt bearbeitet:
Zurück