2016-05-24 14 views
0

Ich habe tatsächlich diesen create.php CodeWie erstelle ich eine .SQL-Datei in Ubuntu Server?

<?php 
    //ENTER THE RELEVANT INFO BELOW 
    $mysqlUserName  = "root"; 
    $mysqlPassword  = "admin"; 
    $mysqlHostName  = "localhost"; 
    $DbName    = "corporativostr_inventario"; 
    $backup_name  = "corporativostr_inventario.sql"; 
    $tables    = array("articulos","articulos_eliminados","categorias","conceptos","proveedores","registros","responsables","responsables_eliminados","usuarios","usuarios_eliminados"); 

    //or add 5th parameter(array) of specific tables: array("mytable1","mytable2","mytable3") for multiple tables 

    Export_Database($mysqlHostName,$mysqlUserName,$mysqlPassword,$DbName, $tables=false, $backup_name=false); 

    function Export_Database($host,$user,$pass,$name, $tables=false, $backup_name=false) 
    { 
     $mysqli = new mysqli($host,$user,$pass,$name); 
     $mysqli->select_db($name); 
     $mysqli->query("SET NAMES 'utf8'"); 

     $queryTables = $mysqli->query('SHOW TABLES'); 
     while($row = $queryTables->fetch_row()) 
     { 
      $target_tables[] = $row[0]; 
     } 
     if($tables !== false) 
     { 
      $target_tables = array_intersect($target_tables, $tables); 
     } 
     foreach($target_tables as $table) 
     { 
      $result   = $mysqli->query('SELECT * FROM '.$table); 
      $fields_amount = $result->field_count; 
      $rows_num=$mysqli->affected_rows;  
      $res   = $mysqli->query('SHOW CREATE TABLE '.$table); 
      $TableMLine  = $res->fetch_row(); 
      $content  = (!isset($content) ? '' : $content) . "\n\n".$TableMLine[1].";\n\n"; 

      for ($i = 0, $st_counter = 0; $i < $fields_amount; $i++, $st_counter=0) 
      { 
       while($row = $result->fetch_row()) 
       { //when started (and every after 100 command cycle): 
        if ($st_counter%100 == 0 || $st_counter == 0) 
        { 
          $content .= "\nINSERT INTO ".$table." VALUES"; 
        } 
        $content .= "\n("; 
        for($j=0; $j<$fields_amount; $j++) 
        { 
         $row[$j] = str_replace("\n","\\n", addslashes($row[$j])); 
         if (isset($row[$j])) 
         { 
          $content .= '"'.$row[$j].'"' ; 
         } 
         else 
         { 
          $content .= '""'; 
         }  
         if ($j<($fields_amount-1)) 
         { 
           $content.= ','; 
         }  
        } 
        $content .=")"; 
        //every after 100 command cycle [or at last line] ....p.s. but should be inserted 1 cycle eariler 
        if ((($st_counter+1)%100==0 && $st_counter!=0) || $st_counter+1==$rows_num) 
        { 
         $content .= ";"; 
        } 
        else 
        { 
         $content .= ","; 
        } 
        $st_counter=$st_counter+1; 
       } 
      } $content .="\n\n\n"; 
     } 
     //$backup_name = $backup_name ? $backup_name : $name."___(".date('H-i-s')."_".date('d-m-Y').")__rand".rand(1,11111111).".sql"; 
     $backup_name = $backup_name ? $backup_name : $name.".sql"; 
     header('Content-Type: application/octet-stream'); 
     header("Content-Transfer-Encoding: Binary"); 
     header("Content-disposition: attachment; filename=\"".$backup_name."\""); 
     echo $content; exit; 
    } 
?> 

, die eine herunterladbare SQL-Datei erstellt, wenn ich die Php-Datei mit dem Web Navigator

in anderem PC öffnen, aber wenn ich es benutze ubuntu mit in Server Ich sehe nur den Inhalt der Datenbank.

Wie kann ich eine .sql-Datei in dem Verzeichnis erstellen, in dem sich die create.php befindet?

Antwort

1

Sie können nicht die SQL-Datei mit diesem Code erstellen, wird dieser Code-Datenbank mit dem Namen Erstellen prueba

Um verwenden wir Kommandozeilen-Abfragen eine SQL-Datei-Datei zu erstellen (kann auch unter Verwendung von Anwendungsebene verwendet werden) .

mysqldump -u'user' -p'password' database_name > /path/filename.sql 

Dies erzeugt eine .sql Datei und Sie die gleiche Abfrage auf der Anwendungsebene verwenden können, um die Datenbank zu erstellen .SQL die Datenbank verwenden, sofern die entsprechenden Rechte hat.

Sie können andere Parameter wie --routines verwenden, falls Ihre Datenbank Subroutinen hat. Es gibt eine Reihe von optionalen Parametern.

+0

Mein Fehler, sorry. Ich habe es schon bearbeitet. Ist es möglich, mit mysqldump eine db von einem Internetserver zu exportieren? – kenethluna

+0

ja. Sie können den Speicherauszug von einem beliebigen MySQL Server nehmen –