Hallo
Könnte mir einer ein PHP script schreiben der MySql tabelendaten in eine txt datei exportiert.
Und ein PHP script der dann auch txt Dateien importiert.
txt Datei: muss als trenzeichen ein "tab" haben die Texte mit " makieren und in der ersten reihe die Tabellen/Textnamen enthalten.
Habe dieses ausprobiert:
PHP
<?PHP
if (isset($_POST['export'])){
/*--- Verbindung zur Datenbank aufbauen ---*/
$dbhost = "***************";
// MySQL - Host, meist ist es localhost
$dbuser = "************";
// MySQL - Benutzer
$dbpass = "***********";
// MySQL - Passwort
$dbdata = "**********";
// MySQL - Datenbankname
@mysql_connect($dbhost, $dbuser, $dbpass);
@$x=mysql_select_db($dbdata);
if (empty($x)) {
echo "Fehler beim Verbinden mit dem Datenbankserver
";
exit;
}
/*--- Deklarierung der per Post übergebenen Daten ---*/
$dbtabelle = $_POST['tabellenname'];
$felder = $_POST['felder'];
if (empty($felder)){ $felder = '*'; }
/*--- Überprüfen, ob die angegebene Tabelle existiert ---*/
$tabellen = mysql_list_tables("$dbdata");
$tabellen_zahl = mysql_num_rows($tabellen);
for ($t = 0; $t < $tabellen_zahl; $t++){
if (mysql_tablename($tabellen, $t) == $dbtabelle){
$ergebnis = '1';
}
}
if (empty($ergebnis)){
echo "Die Tabelle '[b]".$dbtabelle."[/b]' ist in der Datenbank nicht vorhanden.";
exit;
}
/*--- SQL Befehle ausführen ---*/
$sql = "SELECT $felder FROM $dbtabelle";
$query = mysql_query($sql);
$feld_anzahl = mysql_num_fields($query);
/*--- Ergebnisse der Mysql Abfrage ausgeben und in Textdateispeichern ---*/
$sql_statement .= "-- Host: ".$_SERVER['HTTP_HOST']."\n-- Erstellungszeit: ".date("d. F Y u\m H:i")."\n-- PHP-Version: ".phpversion()."\n--\n-- Datenbank: `".$dbdata."`\n--\n\n-- --------------------------------------------------------\n\n";
$sql_statement .= "TRUNCATE TABLE `".$dbtabelle."`;\n\n--\n-- Daten für Tabelle `".$dbtabelle."`\n--\n\n";
while($ds = mysql_fetch_object($query)){
$sql_statement .= "INSERT INTO `".$dbtabelle."` (";
for ($i = 0; $i < $feld_anzahl; $i++){
if ($i == $feld_anzahl-1){
$sql_statement .= mysql_field_name($query, $i);
} else {
$sql_statement .= mysql_field_name($query, $i).', ';
}
}
$sql_statement .= ") VALUES (";
for ($i = 0; $i < $feld_anzahl; $i++){
$name = mysql_field_name($query, $i);
if (empty($ds->$name)){
$ds->$name = "NULL";
}
if ($i == $feld_anzahl-1){
$sql_statement .= "'".$ds->$name."'";
} else {
$sql_statement .= "'".$ds->$name."', ";
}
}
$sql_statement .= ");\n";
}
$datei_name = "Tabelle_'".$dbtabelle."'_am_".date("d_m_y")."_-_".date("h_i_s").".txt";
$datei = @fopen($datei_name, "a+");
$write = @fwrite($datei, $sql_statement);
if (empty($write)){
echo "Die Datei konnte nicht erstellt werden.";
} else {
echo "<font face=\"Arial\" size=\"3\">Folgendes Backup der Tabelle '[b]".$dbtabelle."[/b]' wurde erfolgreich in [b]".$datei_name."[/b] gespeichert.</font>
<hr>
".nl2br($sql_statement);
}
@fclose($datei);
exit;
} else {
?>
<html>
<head>
<meta http-equiv="Content-Language" content="de">
<title>Tabelle exportieren</title>
</head>
<body>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
<font face="Arial">
Name der Tabelle die exportiert werden soll: <input type="text" name="tabellenname" size="20"></p>
Felder die exportiert werden sollen:
<input type="text" name="felder" size="20" value="*"> <font size="2">(Mehrere
Felder müssen mit einem , getrennt werden)</font></p></font>
<input type="submit" value="Tabelle exportieren" name="export"></p>
</form>
</body>
</html>
<? } ?>
Alles anzeigen
leider trennt das Script nicht mit tab und Texte nicht mit " sowie die Tabelennamen/Spaltennamen sind auch nicht vorhanden.
MFG
Kreze