Avatar billede dank Nybegynder
10. juli 2003 - 23:46 Der er 8 kommentarer og
2 løsninger

backup "function" til MySQL

Nogen der kender, eller har lavet en backup funktion til at tage backup af database (MySQL)?

Gerne så den kan sende databasen, altså så den kan downloades (evt. komprimeret) :o)

Anyone?
Avatar billede Slettet bruger
10. juli 2003 - 23:55 #1
phpmyadmin har en udmærket export funktion! Den virker udmærket du får dataen i text format så du kan smide den ind igen ved hjælp at et query i PHPmyadmin!
Du kan også få det downloadet som fil i zip format eller tarball (ikke sikker på det sidste)
Avatar billede simonvalter Praktikant
10. juli 2003 - 23:56 #2
hvis du vil have en færdig løsning er der nogen her
http://www.hotscripts.com/PHP/Scripts_and_Programs/File_Manipulation/File_Backup/

eller der er en kode stump her
http://codewalkers.com/seecode/46.html
men den komprimerer ikke.
Avatar billede ohmish Nybegynder
10. juli 2003 - 23:57 #3
jeg har en du kan bruge.. øjeblik
Avatar billede simonvalter Praktikant
10. juli 2003 - 23:59 #4
http://www.hotscripts.com/Detailed/21960.html
Backup of a mysql database in mysqldump format without using mysqldump or a system command, only PHP. The class makes a SQL script or GZip archive to download
Avatar billede dank Nybegynder
11. juli 2003 - 00:00 #5
regin> Sorry.. jeg burde have skrevet, at phpmyadmin ikke duede. Det er til at intregere i et lille webbaseret system.
Avatar billede ohmish Nybegynder
11. juli 2003 - 00:01 #6
<?php

$dbhost = "database adresse";
$dbuname = "bruger";
$dbpass = "kodeord";
$dbname = "database navn";
   
  @set_time_limit(600);
  $crlf="\n";

  $strNoTablesFound = "Ingen databasetabeller fundet";
  $strHost = "Host";
  $strDatabase = "Database ";
  $strTableStructure = "Struktur for tabel";
  $strDumpingData = "Indhold af tabel";
  $strError = "Fejl";
  $strSQLQuery = "SQL-query";
  $strMySQLSaid = "MySQL: ";
  $strBack = "Tilbage";
  $strName = "Backup af database";
  $strtoday = date ("d-m-y");
       
  header("Content-disposition: filename=$dbname.sql");
  header("Content-type: application/ms-download");
  header("Pragma: no-cache");
  header("Expires: 0");
       
  $client = getenv("HTTP_USER_AGENT");
  if(ereg('[^(]*\((.*)\)[^)]*',$client,$regs))
  {
    $os = $regs[1];
    if (eregi("Win",$os))
      $crlf="\r\n";
  } 
       
  function my_handler($sql_insert)
  {
    global $crlf;
    echo "$sql_insert;$crlf";
  }
       
  function get_table_content($db, $table, $handler)
  {
    $result = mysql_db_query($db, "SELECT * FROM $table") or mysql_die();
    $i = 0;
    while($row = mysql_fetch_row($result))
    {
      $table_list = "(";
       
      for($j=0; $j<mysql_num_fields($result);$j++)
                    $table_list .= mysql_field_name($result,$j).", ";
       
      $table_list = substr($table_list,0,-2);
      $table_list .= ")";
       
      if(isset($GLOBALS["showcolumns"]))
        $schema_insert = "INSERT INTO $table $table_list VALUES (";
      else
        $schema_insert = "INSERT INTO $table VALUES (";
       
      for($j=0; $j<mysql_num_fields($result);$j++)
      {
        if(!isset($row[$j]))
          $schema_insert .= " NULL,";
        elseif($row[$j] != "")
          $schema_insert .= " '".addslashes($row[$j])."',";
        else
          $schema_insert .= " '',";
      }
      $schema_insert = ereg_replace(",$", "", $schema_insert);
      $schema_insert .= ")";
      $handler(trim($schema_insert));
      $i++;
    }
    return (true);
  }
       
  function get_table_def($db, $table, $crlf)
  {
    $schema_create = "";
    $schema_create .= "DROP TABLE IF EXISTS $table; CREATE TABLE $table ($crlf";
       
    $result = mysql_db_query($db, "SHOW FIELDS FROM $table") or mysql_die();
    while($row = mysql_fetch_array($result))
    {
      $schema_create .= "  $row[Field] $row[Type]";
       
      if(isset($row["Default"]) && (!empty($row["Default"]) || $row["Default"] == "0"))
        $schema_create .= " DEFAULT '$row[Default]'";
      if($row["Null"] != "YES")
        $schema_create .= " NOT NULL";
      if($row["Extra"] != "")
        $schema_create .= " $row[Extra]";
      $schema_create .= ",$crlf";
    }
    $schema_create = ereg_replace(",".$crlf."$", "", $schema_create);
    $result = mysql_db_query($db, "SHOW KEYS FROM $table") or mysql_die();
    while($row = mysql_fetch_array($result))
    {
      $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($x, $columns) = @each($index))
    {
      $schema_create .= ",$crlf";
      if($x == "PRIMARY")
        $schema_create .= "  PRIMARY KEY (" . implode($columns, ", ") . ")";
      elseif (substr($x,0,6) == "UNIQUE")
        $schema_create .= "  UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")";
      else
        $schema_create .= "  KEY $x (" . implode($columns, ", ") . ")";
    }
       
    $schema_create .= "$crlf)";
    return (stripslashes($schema_create));
  }
       
  function mysql_die($error = "")
  {
    echo "<b> $strError </b><p>";
    if(isset($sql_query) && !empty($sql_query))
    {
      echo "$strSQLQuery: <pre>$sql_query</pre><p>";
    }
    if(empty($error))
      echo $strMySQLSaid.mysql_error();
    else
      echo $strMySQLSaid.$error;
    echo "<br><a href=\"java script:history.go(-1)\">$strBack</a>";
    exit;
  }
       
  global $bruger, $dbhost, $dbuname, $dbpass, $dbname;
  mysql_connect($dbhost, $dbuname, $dbpass);
  @mysql_select_db("$dbname") or die ("Kunne ikke forbinde til databasen");
       
  $tables = mysql_list_tables($dbname);
       
  $num_tables = @mysql_numrows($tables);
  if($num_tables == 0)
  {
    echo $strNoTablesFound;
  }
  else
  {
    $i = 0;
    $hours = date ("H:i");
    print "# ========================================================$crlf";
    print "#$crlf";
    print "# $strName : $dbname$crlf";
    print "# Download d. $strtoday kl. $hours$crlf";
    print "#$crlf";
    print "# Denne fil er alene beregnet som ren backup af databasen.$crlf";
    print "# Ét forkert komma eller id, kan ødelægge en hel del...$crlf";
    print "# UNDGÅ derfor at redigere i teksten.$crlf";
    print "#$crlf";
    print "# ========================================================$crlf";
    print "$crlf";
           
    while($i < $num_tables)
    {
      $table = mysql_tablename($tables, $i);
       
      print "#$crlf";
      print "# $strTableStructure '$table'$crlf";
      print "#$crlf";
      print $crlf;
       
      echo get_table_def($dbname, $table, $crlf).";$crlf$crlf";
               
      print "#$crlf";
      print "# $strDumpingData '$table'$crlf";
      print "#$crlf";
      print $crlf;
           
      get_table_content($dbname, $table, "my_handler");
       
      $i++;
    }
  }
       
?>
Avatar billede simonvalter Praktikant
11. juli 2003 - 00:03 #7
ham her har også et der komprimerer .. og giver dig muligheden for at dowloade  / restore
http://www.absoft-my.com/pondok/scripts.php
Avatar billede ohmish Nybegynder
11. juli 2003 - 00:04 #8
ret $db felterne øverst, og huske at LINKE til filen.
Avatar billede dank Nybegynder
11. juli 2003 - 02:17 #9
loadet> Opretter du svar?

Jeg kigger nærmere på de muligheder som i har givet.
Avatar billede ohmish Nybegynder
11. juli 2003 - 03:57 #10
hva med at kigge på mulighederne og give point efter brugbarheden? :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester