Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Exportar datos de mysql

Estas en el tema de Exportar datos de mysql en el foro de Mysql en Foros del Web. Buenas a todos, tengo bases de datos en mysql, que administro con el phpMyAdmin. la cuestíon es que hago un backup diario de las bases ...
  #1 (permalink)  
Antiguo 11/07/2006, 02:21
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Exportar datos de mysql

Buenas a todos,

tengo bases de datos en mysql, que administro con el phpMyAdmin. la cuestíon es que hago un backup diario de las bases de datos.

el problema es que tengo que entrar en el phpMyAdmin, exportar las bases de datos, y guardarlas en un zip que contiene un archivo de texto.

hay alguna forma de poder ejecutar esta tarea de una forma automatizada, que se ejecute a una hora del dia? tipo tarea programada de windows o algo asi? lo que no se si hay alguna sentencia para ello.

espero vuestra ayuda!!!

ferranWEB
  #2 (permalink)  
Antiguo 11/07/2006, 08:41
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Si, trabajas en windows?
Puedes hacerlo a traves del comando mysqldump, o crear un script php que haga el trabajo. Con el script php tienes la posibilidad de crear el zip. En el foro de php tienes el script hecho, ejemplo este:

http://www.forosdelweb.com/showthrea...highlight=dump

Ya sea el comando o el script deben ser llamados desde una tarea programada, en windows. Si usas linux, es lo mismo, excepto que se llaman cron jobs.
  #3 (permalink)  
Antiguo 12/07/2006, 03:29
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
buenas claudiovega, y gracias por responder.

la cosa es que este script ya lo probé en su dia. lo he vuelto a probar, y me da el siguiente error:

Parse error: parse error, unexpected T_VARIABLE in /home2/creasit/creasites-www/backup.php on line 122

te pongo el codigo de nuevo para que lo tengas presente:

Código:
<?php 
/* Usuario para la conexion a Mysql. */ 
$usurio = "usuario"; 
/* Password para la conexion a Mysql. */ 
$passwd = "123456"; 
 /* Host para la conexion a Mysql. */ 
$host = "localhost"; 
/* Base de Datos que se seleccionará. */ 
$bd = "agenda"; 
/* Nombre del fichero que se descargará. */ 
$nombre = "dump.txt"; 
/* Determina si la tabla será vaciada (si existe) cuando  restauremos la tabla. */             
$drop = false; 
/*  
* Array que contiene las tablas de la base de datos que seran resguardadas. 
* Puede especificarse un valor false para resguardar todas las tablas 
* de la base de datos especificada en  $bd. 
*  
* Ejs.: 
* $tablas = false; 
*    o 
* $tablas = array("tabla1", "tabla2", "tablaetc"); 
*  
*/ 
$tablas = false; 
/*  
* Tipo de compresion. 
* Puede ser "gz", "bz2", o false (sin comprimir) 
*/ 
$compresion = false; 

/* Conexion y eso*/ 
$conexion = mysql_connect($host, $usurio, $passwd) 
or die("No se conectar con el servidor MySQL: ".mysql_error()); 
mysql_select_db($bd, $conexion) 
or die("No se pudo seleccionar la Base de Datos: ". mysql_error()); 


/* Se busca las tablas en la base de datos */ 
if ( empty($tablas) ) { 
    $consulta = "SHOW TABLES FROM $bd;"; 
    $respuesta = mysql_query($consulta, $conexion) 
    or die("No se pudo ejecutar la consulta: ".mysql_error()); 
    while ($fila = mysql_fetch_array($respuesta, MYSQL_NUM)) { 
        $tablas[] = $fila[0]; 
    } 
} 


/* Se crea la cabecera del archivo */ 
$info['dumpversion'] = "1.1b"; 
$info['fecha'] = date("d-m-Y"); 
$info['hora'] = date("h:m:s A"); 
$info['mysqlver'] = mysql_get_server_info(); 
$info['phpver'] = phpversion(); 
ob_start(); 
print_r($tablas); 
$representacion = ob_get_contents(); 
ob_end_clean (); 
preg_match_all('/(\[\d+\] => .*)\n/', $representacion, $matches); 
$info['tablas'] = implode(";  ", $matches[1]); 
// en donde esta $dump=<<<EOT 
$dump= "         
// xxx 
//xxxxx 
";     //  en donde esta el EOT;  

foreach ($tablas as $tabla) { 
     
    $drop_table_query = ""; 
    $create_table_query = ""; 
    $insert_into_query = ""; 
     
    /* Se halla el query que será capaz vaciar la tabla. */ 
    if ($drop) { 
        $drop_table_query = "DROP TABLE IF EXISTS `$tabla`;"; 
    } else { 
        $drop_table_query = "# No especificado."; 
    } 

    /* Se halla el query que será capaz de recrear la estructura de la tabla. */ 
    $create_table_query = ""; 
    $consulta = "SHOW CREATE TABLE $tabla;"; 
    $respuesta = mysql_query($consulta, $conexion) 
    or die("No se pudo ejecutar la consulta: ".mysql_error()); 
    while ($fila = mysql_fetch_array($respuesta, MYSQL_NUM)) { 
            $create_table_query = $fila[1].";"; 
    } 
     
    /* Se halla el query que será capaz de insertar los datos. */ 
    $insert_into_query = ""; 
    $consulta = "SELECT * FROM $tabla;"; 
    $respuesta = mysql_query($consulta, $conexion) 
    or die("No se pudo ejecutar la consulta: ".mysql_error()); 
    while ($fila = mysql_fetch_array($respuesta, MYSQL_ASSOC)) { 
            $columnas = array_keys($fila); 
            foreach ($columnas as $columna) { 
                if ( gettype($fila[$columna]) == "NULL" ) { 
                    $values[] = "NULL"; 
                } else { 
                    $values[] = "'".mysql_real_escape_string($fila[$columna])."'"; 
                } 
            } 
            $insert_into_query .= "INSERT INTO `$tabla` VALUES (".implode(", ", $values).");\n"; 
            unset($values); 
    } 
     
// en donde esta $dump=<<<EOT 
$dump= "         
// xxx 
//xxxxx 
";     //  en donde esta el EOT;  


# | Vaciado de tabla '$tabla' 
# +-------------------------------------> 
$drop_table_query 


# | Estructura de la tabla '$tabla' 
# +-------------------------------------> 
$create_table_query 


# | Carga de datos de la tabla '$tabla' 
# +-------------------------------------> 
$insert_into_query 

EOT; 
} 

/* Envio */ 
if ( !headers_sent() ) { 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 
    header("Content-Transfer-Encoding: binary"); 
    switch ($compresion) { 
    case "gz": 
        header("Content-Disposition: attachment; filename=$nombre.gz"); 
        header("Content-type: application/x-gzip"); 
        echo gzencode($dump, 9); 
        break; 
    case "bz2":  
        header("Content-Disposition: attachment; filename=$nombre.bz2"); 
        header("Content-type: application/x-bzip2"); 
        echo bzcompress($dump, 9); 
        break; 
    default: 
        header("Content-Disposition: attachment; filename=$nombre"); 
        header("Content-type: application/force-download"); 
        echo $dump; 
    } 
} else { 
    echo "<b>ATENCION: Probablemente ha ocurrido un error</b><br />\n<pre>\n$dump\n</pre>"; 
}
y esa linea de error es la siguiente:

$create_table_query

incluso modifique una linea de codigo tal y como comenta algun compi,y nada de nada.a ver si puedes ayudarme.

saludos, y gracias!!
  #4 (permalink)  
Antiguo 12/07/2006, 03:45
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
he vuelto a modificar lo que comentaba el email, y ahora me da este error:

Parse error: parse error, unexpected T_SL in /home2/creasit/creasites-www/backup.php on line 62

que falla ahora?

saludos
  #5 (permalink)  
Antiguo 13/07/2006, 15:06
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
nadie puede ayudarme?
  #6 (permalink)  
Antiguo 14/07/2006, 08:50
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Modifiqué el script para quitar los errores, pruébalo.

Código PHP:
<?php
    $usuario 
"usuario";
    
$passwd "password";
    
$host "localhost";
    
$bd "base";
    
$nombre "dump.txt";
    
// Borrar las tablas si existen?
    
$drop false;
    
// Tablas que se exportaran
    
$tablas false;
    
// Algoritmo de compresion a usar
    
$compresion false;

    
// Conexion a la bd
    
$conexion mysql_connect($host$usuario$passwd)
    or die(
"No se conectar con el servidor MySQL: ".mysql_error());
    
mysql_select_db($bd$conexion)
    or die(
"No se pudo seleccionar la Base de Datos: "mysql_error());

    
// Se busca las tablas en la base de datos
    
if ( empty($tablas) )
    {
        
$consulta "SHOW TABLES FROM $bd;";
        
$respuesta mysql_query($consulta$conexion)
        or die(
"No se pudo ejecutar la consulta: ".mysql_error());
        while (
$fila mysql_fetch_array($respuestaMYSQL_NUM))
            
$tablas[] = $fila[0];
    }

    
// Se crea la cabecera del archivo
    
$info['dumpversion'] = "1.1b";
    
$info['fecha'] = date("d-m-Y");
    
$info['hora'] = date("h:m:s A");
    
$info['mysqlver'] = mysql_get_server_info();
    
$info['phpver'] = phpversion();
    
ob_start();
    
print_r($tablas);
    
$representacion ob_get_contents();
    
ob_end_clean ();
    
preg_match_all('/(\[\d+\] => .*)\r\n/'$representacion$matches);
    
$info['tablas'] = implode(";  "$matches[1]);

    
// La variable del dump
    
$dump"";

    foreach (
$tablas as $tabla)
    {
        
$drop_table_query "";
        
$create_table_query "";
        
$insert_into_query "";

        
// Se halla el query que será capaz vaciar la tabla.
        
if ($drop)
            
$drop_table_query "DROP TABLE IF EXISTS `$tabla`;";
        else
            
$drop_table_query "# No especificado.";

        
// Se halla el query que será capaz de recrear la estructura de la tabla.
        
$create_table_query "";
        
$consulta "SHOW CREATE TABLE $tabla;";
        
$respuesta mysql_query($consulta$conexion)
        or die(
"No se pudo ejecutar la consulta: ".mysql_error());

        while (
$fila mysql_fetch_array($respuestaMYSQL_NUM))
            
$create_table_query $fila[1].";";

        
// Se halla el query que será capaz de insertar los datos.
        
$insert_into_query "";
        
$consulta "SELECT * FROM $tabla;";
        
$respuesta mysql_query($consulta$conexion)
        or die(
"No se pudo ejecutar la consulta: ".mysql_error());
        while (
$fila mysql_fetch_array($respuestaMYSQL_ASSOC))
        {
            
$columnas array_keys($fila);
            foreach (
$columnas as $columna)
            {
                if ( 
gettype($fila[$columna]) == "NULL" )
                    
$values[] = "NULL";
                else
                    
$values[] = "'".mysql_real_escape_string($fila[$columna])."'";
            }
            
$insert_into_query .= "INSERT INTO `$tabla` VALUES (".implode(", "$values).");\r\n";
            unset(
$values);
        }

        
$dump .="
        // xxx
        //xxxxx



        # | Vaciado de tabla '$tabla'
        # +------------------------------------->
        $drop_table_query


        # | Estructura de la tabla '$tabla'
        # +------------------------------------->
        $create_table_query


        # | Carga de datos de la tabla '$tabla'
        # +------------------------------------->
        $insert_into_query

        " 
;
    }

    if ( !
headers_sent() )
    {
        
header("Pragma: no-cache");
        
header("Expires: 0");
        
header("Content-Transfer-Encoding: binary");
        switch (
$compresion)
        {
            case 
"gz":
                
header("Content-Disposition: attachment; filename=$nombre.gz");
                
header("Content-type: application/x-gzip");
                echo 
gzencode($dump9);
                break;
            case 
"bz2":
                
header("Content-Disposition: attachment; filename=$nombre.bz2");
                
header("Content-type: application/x-bzip2");
                echo 
bzcompress($dump9);
                break;
            default:
                
header("Content-Disposition: attachment; filename=$nombre");
                
header("Content-type: application/force-download");
                echo 
$dump;
        }
    }
    else
        echo 
"<b>ATENCION: Probablemente ha ocurrido un error</b><br />\r\n<pre>\r\n$dump\r\n</pre>";
?>
  #7 (permalink)  
Antiguo 07/09/2006, 08:54
 
Fecha de Ingreso: septiembre-2006
Mensajes: 3
Antigüedad: 17 años, 7 meses
Puntos: 0
Al exportar...

Una pregunta no conosco mucho de PhpMyAdmin, mi pregunta es simple,
cuando exporto una base datos via web para descargarme una copia de seguridad en formato por ejemplo EXCEL, se genera algun log? o alguna forma de saber quien fue el que hizo esta copia? y se garde dentro de algun registro en mi PhpMyAdmin ???
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 09:05.