Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Backup bazy bez jednej tabeli
Forum PHP.pl > Forum > Przedszkole
mapi
Witam, chciałbym zrobić taką dogodność w php;) a mianowicie zrzut bazy1 do pliku (bez jednej tabeli) a następnie wgranie tej bazy1 do innej bazy2.
Czy ma ktoś jakiś pomysł? Znalazłem kilka skryptów z backupem ale nie ma tam takich możliwości omijania konkretnych tabel.

tutaj taki skrypt z frazpc.pl

$User = 'login';
$UserPass = 'haslo';
$Name = 'baza';

if($User & $UserPass)
dbDump($User, $Name, $UserPass);

function dbConnect($dbuser, $dbuserpass, $dbname){

$dbHandle = mysql_connect("localhost", $dbuser, $dbuserpass) or die ("Nie można się połączyć.");
mysql_select_db ($dbname, $dbHandle) or die ("Nie można wybrać bazy danych.");
return $dbHandle;

}

function dbDisconnect($dbHandle){
if(! mysql_close($dbHandle))
return False;
else
return True;
}

function dbDump($dbUser, $dbName, $dbUserPass){
$path = "./dump_base_" . date('d-m-y_H-i') . ".sql";
$export = '';
$data = '';
$handle = dbConnect($dbUser, $dbUserPass, $dbName);
$q0 = "SELECT DATABASE()";
$res0 = mysql_query($q0,$handle);
$baza = mysql_fetch_row($res0);
$baza = $baza[0];
$q1 = "SHOW TABLES";
$res1 = mysql_query($q1,$handle);
$export .= "USE $baza;";


while($row = mysql_fetch_row($res1)){
$tabela = $row[0];
$q2 = "SHOW CREATE TABLE ".$tabela;
$res2 = mysql_query($q2,$handle);
if($row2 = mysql_fetch_row($res2)){
$tmp = $row2[1];
$export.= $tmp;
$export.=";";
}

$q3 = "SELECT * FROM $tabela";
$res3 = mysql_query($q3,$handle);

while ($row3 = mysql_fetch_array($res3)){
$data .= "INSERT INTO `".$tabela."` VALUES (";
$ile = mysql_num_fields($res3);

for($i = 0;$i<$ile;$i++){

$tmp = preg_replace("/'/", "\\'", $row3[$i]);
$row3[$i] = $tmp;
$data .= "'".$row3[$i]."'";
if($i < $ile -1)
$data .= ", ";
}
$data .= ");\n";
}
}

$export .= $data; // merge all data together
$buf1 = str_replace("ENGINE", "TYPE", $export);
$buf2 = preg_replace("/DEFAULT.CHARSET=.*;/", ";", $buf1);

dbDisconnect($handle);


$file=fopen($path,'wb');

if(!$file)
return False;

$result_end = fwrite($file, $buf2);

fclose($file);

echo "<a href=$path>Plik bazy: $path</>";

return $result_end;
}



z góry dziękuje za podpowiedź smile.gif
nevt
po pierwsze: ujmij kod w odpowiednie znaczniki BBcode, bo trzeba będzie zamknąć temat.

a co do problemu, zmień fragment:
  1. <?php
  2. while($row = mysql_fetch_row($res1)){
  3. $tabela = $row[0];
  4. $q2 = "SHOW CREATE TABLE ".$tabela;
  5. ?>

na:
  1. <?php
  2. while($row = mysql_fetch_row($res1)){
  3. $tabela = $row[0];
  4. if($tabela == 'nazwa_tabeli_do_pominiecia')
  5.  continue;
  6. $q2 = "SHOW CREATE TABLE ".$tabela;
  7. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.