Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: RedZer en 14 Julio 2011, 19:06 pm



Título: como exportar una bd
Publicado por: RedZer en 14 Julio 2011, 19:06 pm
mi duda es la siguiente como puedo exportar una bd que esta en la siguiente ruta
localhost/phpmyadmin desde una aplicasion web.


Título: Re: como exportar una bd
Publicado por: Nakp en 14 Julio 2011, 21:34 pm
que tu aplicación web sea phpmyadmin no quiere decir que la base de datos está ahí

http://codex.wordpress.org/Backing_Up_Your_Database#Backup_Process_with_phpMyAdmin


Título: Re: como exportar una bd
Publicado por: RedZer en 14 Julio 2011, 22:10 pm
que tu aplicación web sea phpmyadmin no quiere decir que la base de datos está ahí

http://codex.wordpress.org/Backing_Up_Your_Database#Backup_Process_with_phpMyAdmin

Nakp solo puse esa ruta como ejemplo mi duda no es el ejemplo k m planteaste.
lo que yo deceo hacer es programar un formulario por decirlo asi para k el administrador del sistema no tenga que irse a esa ruta localhost/phpmyadmin y realizar los pasos que tu me acabas de plantear .


Título: Re: como exportar una bd
Publicado por: madpitbull_99 en 14 Julio 2011, 22:16 pm
Tienes que crear un aplicación que conecte con la base de datos, seleccione todos los registros, guardarlos en un fichero y enviarlo al usuario (luego borrarlo).

Si estás en Linux, puedes hacer una aplicación que haga un backup usando el mysqldump (http://www.desarrolloweb.com/articulos/1202.php). Envías el comando desde la aplicación PHP.


Título: Re: como exportar una bd
Publicado por: RedZer en 14 Julio 2011, 22:39 pm
esto es lo k andaba buscando dejo el code por si alguien le interesa gracias madpitbull y nakp

Código
  1. <?php
  2. /* Usuario para la conexion a Mysql. */
  3. $usurio = "root";
  4. /* Password para la conexion a Mysql. */
  5. $passwd = "root";
  6. /* Host para la conexion a Mysql. */
  7. $host = "localhost";
  8. /* Base de Datos que se seleccionará. */
  9. $bd = "test";
  10. /* Nombre del fichero que se descargará. */
  11. $nombre = "dump.txt";
  12. /* Determina si la tabla será vaciada (si existe) cuando  restauremos la tabla. */            
  13. $drop = false;
  14. /*
  15. * Array que contiene las tablas de la base de datos que seran resguardadas.
  16. * Puede especificarse un valor false para resguardar todas las tablas
  17. * de la base de datos especificada en  $bd.
  18. *
  19. * Ejs.:
  20. * $tablas = false;
  21. *    o
  22. * $tablas = array("tabla1", "tabla2", "tablaetc");
  23. *
  24. */
  25. $tablas = false;
  26. /*
  27. * Tipo de compresion.
  28. * Puede ser "gz", "bz2", o false (sin comprimir)
  29. */
  30. $compresion = false;
  31.  
  32. /* Conexion y eso*/
  33. $conexion = mysql_connect($host, $usurio, $passwd)
  34. or die("No se conectar con el servidor MySQL: ".mysql_error());
  35. mysql_select_db($bd, $conexion)
  36. or die("No se pudo seleccionar la Base de Datos: ". mysql_error());
  37.  
  38.  
  39. /* Se busca las tablas en la base de datos */
  40. if ( empty($tablas) ) {
  41.    $consulta = "SHOW TABLES FROM $bd;";
  42.    $respuesta = mysql_query($consulta, $conexion)
  43.    or die("No se pudo ejecutar la consulta: ".mysql_error());
  44.    while ($fila = mysql_fetch_array($respuesta, MYSQL_NUM)) {
  45.        $tablas[] = $fila[0];
  46.    }
  47. }
  48.  
  49.  
  50. /* Se crea la cabecera del archivo */
  51. $info['dumpversion'] = "1.1b";
  52. $info['fecha'] = date("d-m-Y");
  53. $info['hora'] = date("h:m:s A");
  54. $info['mysqlver'] = mysql_get_server_info();
  55. $info['phpver'] = phpversion();
  56. print_r($tablas);
  57. $representacion = ob_get_contents();
  58. preg_match_all('/(\[\d+\] => .*)\n/', $representacion, $matches);
  59. $info['tablas'] = implode(";  ", $matches[1]);
  60. $dump = <<<EOT
  61. # +===================================================================
  62. # | YoDumpeo! {$info['dumpversion']}
  63. # | por fran86 <fran86@myrealbox.com>
  64. # |
  65. # | Generado el {$info['fecha']} a las {$info['hora']} por el usurio '$usurio'
  66. # | Servidor: {$_SERVER['HTTP_HOST']}
  67. # | MySQL Version: {$info['mysqlver']}
  68. # | PHP Version: {$info['phpver']}
  69. # | Base de datos: '$bd'
  70. # | Tablas: {$info['tablas']}
  71. # |
  72. # +-------------------------------------------------------------------
  73.  
  74. EOT;
  75. foreach ($tablas as $tabla) {
  76.  
  77.    $drop_table_query = "";
  78.    $create_table_query = "";
  79.    $insert_into_query = "";
  80.  
  81.    /* Se haya el query que será capaz vaciar la tabla. */
  82.    if ($drop) {
  83.        $drop_table_query = "DROP TABLE IF EXISTS `$tabla`;";
  84.    } else {
  85.        $drop_table_query = "# No especificado.";
  86.    }
  87.  
  88.    /* Se haya el query que será capaz de recrear la estructura de la tabla. */
  89.    $create_table_query = "";
  90.    $consulta = "SHOW CREATE TABLE $tabla;";
  91.    $respuesta = mysql_query($consulta, $conexion)
  92.    or die("No se pudo ejecutar la consulta: ".mysql_error());
  93.    while ($fila = mysql_fetch_array($respuesta, MYSQL_NUM)) {
  94.            $create_table_query = $fila[1].";";
  95.    }
  96.  
  97.    /* Se haya el query que será capaz de insertar los datos. */
  98.    $insert_into_query = "";
  99.    $consulta = "SELECT * FROM $tabla;";
  100.    $respuesta = mysql_query($consulta, $conexion)
  101.    or die("No se pudo ejecutar la consulta: ".mysql_error());
  102.    while ($fila = mysql_fetch_array($respuesta, MYSQL_ASSOC)) {
  103.            $columnas = array_keys($fila);
  104.            foreach ($columnas as $columna) {
  105.                if ( gettype($fila[$columna]) == "NULL" ) {
  106.                    $values[] = "NULL";
  107.                } else {
  108.                    $values[] = "'".mysql_real_escape_string($fila[$columna])."'";
  109.                }
  110.            }
  111.            $insert_into_query .= "INSERT INTO `$tabla` VALUES (".implode(", ", $values).");\n";
  112.            unset($values);
  113.    }
  114.  
  115. $dump .= <<<EOT
  116.  
  117. # | Vaciado de tabla '$tabla'
  118. # +------------------------------------->
  119. $drop_table_query
  120.  
  121.  
  122. # | Estructura de la tabla '$tabla'
  123. # +------------------------------------->
  124. $create_table_query
  125.  
  126.  
  127. # | Carga de datos de la tabla '$tabla'
  128. # +------------------------------------->
  129. $insert_into_query
  130.  
  131. EOT;
  132. }
  133.  
  134. /* Envio */
  135. if ( !headers_sent() ) {
  136.    header("Pragma: no-cache");
  137.    header("Expires: 0");
  138.    header("Content-Transfer-Encoding: binary");
  139.    switch ($compresion) {
  140.    case "gz":
  141.        header("Content-Disposition: attachment; filename=$nombre.gz");
  142.        header("Content-type: application/x-gzip");
  143.        echo gzencode($dump, 9);
  144.        break;
  145.    case "bz2":
  146.        header("Content-Disposition: attachment; filename=$nombre.bz2");
  147.        header("Content-type: application/x-bzip2");
  148.        echo bzcompress($dump, 9);
  149.        break;
  150.    default:
  151.        header("Content-Disposition: attachment; filename=$nombre");
  152.        header("Content-type: application/force-download");
  153.        echo $dump;
  154.    }
  155. } else {
  156.    echo "<b>ATENCION: Probablemente ha ocurrido un error</b><br />\n<pre>\n$dump\n</pre>";
  157. }
  158. ?>
  159.