Foros del Web » Programando para Internet » PHP »

Exportar La Base De Datos???

Estas en el tema de Exportar La Base De Datos??? en el foro de PHP en Foros del Web. Hola!!!! Estuve revisando las FAQ y vi este codigo Cita: Tema: Bases de datos Pregunta: ¿Como exportar mi base de datos en MySQL a un ...
  #1 (permalink)  
Antiguo 19/11/2003, 05:40
Avatar de Jeremias  
Fecha de Ingreso: agosto-2003
Ubicación: Caracas
Mensajes: 504
Antigüedad: 20 años, 8 meses
Puntos: 0
Pregunta Exportar La Base De Datos???

Hola!!!!
Estuve revisando las FAQ y vi este codigo

Cita:
Tema: Bases de datos
Pregunta: ¿Como exportar mi base de datos en MySQL a un archivo fichero.sql?
Respuesta:

Para guardar una base de datos, sin ningún gestor como podría ser phpMyAdmin. Se podría usar el siguiente código. Tal cual está .. envia a descargar el "dump" (volcado de datos y estructura) de la Base de datos seleccinada, incluido todas sus tablas.

Código PHP:
<?
// Nombre del archivo de con el cual queremos que se guarde la base de datos
$filename "fichero.sql"
// Cabezeras para forzar al navegador a guardar el archivo
header("Pragma: no-cache");
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$filename");

$usuario="usuario";  // Usuario de la base de datos, un ejemplo podria ser 'root'
$passwd="contraseña";  // Contraseña asignada al usuario
$bd="base_de_datos";  // Nombre de la Base de Datos a exportar

// Funciones para exportar la base de datos
$executa "c:\mysql\bin\mysqldump.exe -u $usuario --password=$passwd --opt $bd";
system($executa$resultado);

// Comprobar si se a realizado bien, si no es asi, mostrará un mensaje de error
if ($resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; }

?>
Y yo exactamente quiero hacer eso, pero resulta que lo prove y no me funciono, tambien le hice unos cambios para ver si me funcionaba con los codigos para el SO Linux y tampoco me funciono, aunque yo tengo Win XP y lo hice solo por probar, pero entonces me gustaria saber si alguien conoce de otro codigo que me haga lo mismo, o si sabe porque no me funciono a mi, o que tengo que hacer exactamente para que me funcione, porque yo le puse los datos de nombre de usuario, password y base de dato, pero no se si para que haga la exportacion al archivo de texto simplemente tengo que correr o ejecutar la pagina o si tengo que colocar ese codigo en algun lugar en especifico. Bueno cuento con sus respuestas pues de verdad que me urge. Simplemente quiero poder salvar la BD en un archivo plano, es decir de texto con su formato y demas. Hasta luego y GRACIAS DE ANTEMANO
__________________
Atte. Jere
Agradezco su pronta colaboración.
;-) :arriba:Hoy por mi, mañana por ti:arriba: ;-)
  #2 (permalink)  
Antiguo 19/11/2003, 06:23
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Asegúrate que tienes el programa mysqlbinmysqldump.exe y que es accesible desde C: (en el servidor).

Si tu servidor es Linux, supongo que deberas hacer algo como /usr/bin/mysqldump
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 19/11/2003, 08:53
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
En realidad es $executa = 'c:\mysql\bin\mysqldump.exe -u $usuario --password=$passwd --opt $bd';
Si instalaste mysql en otro lado, debes indicar la ruta correcta.

Cain, lo que pasa es que el codigo vB se come las \\

Saludoss!
  #4 (permalink)  
Antiguo 19/11/2003, 09:17
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Y asegúrate que puedes utilizar el comando system() (o exec(), passthru(), ...). Si tu servidor ha configurado PHP de modo seguro, no podrás utilizarlos.
__________________
M a l d i t o F r i k i
  #5 (permalink)  
Antiguo 19/11/2003, 10:57
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
prueba con este code

<?php

$date_month = date('m');
$date_year = date('Y');
$date_day = date('d');

//fijo el date de hoy
$Date = "$date_year-$date_month-$date_day";

//coloco nombre al archivo con fecha
$filename = "DB_tuya_$Date.sql";

header("Pragma: no-cache");
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$filename");


$usuario = "usuario";
$passwd = "password";
$bd = "DB_tuya";

//windows
//$executa = "c:\mysql\bin\mysqldump.exe -u $usuario --password=$passwd --opt $bd";
//system($executa, $resultado);

//para Unix
$executa = "mysqldump -u $usuario --password=$passwd --opt $bd";
system($executa, $resultado);


if ($resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; }

?>

fijate que puedes habilitar las lines de ejecución como para linux y windows, segun tu caso

espero te solucione el problema.

También sería interesante que en lugar de exportar el .sql en bruto lo exportara de una vez comprimido en .zip.. estoy investigando eso.. si alguien conoce y desee compartir alguna sugerencia. bienvenido..

Última edición por andinistas; 19/11/2003 a las 11:34
  #6 (permalink)  
Antiguo 19/11/2003, 11:52
Avatar de Jeremias  
Fecha de Ingreso: agosto-2003
Ubicación: Caracas
Mensajes: 504
Antigüedad: 20 años, 8 meses
Puntos: 0
GRACIASPOR SU AYUDA, PERO AUN NO RESULTA

Hola a todos y gracias por su ayuda.
Aun nono me resulta y les voy a colocar los errores que me lanza y como puse el codigo segun mis datos

Código PHP:
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="" content="text/html; charset=iso-8859-1">
<meta http-equiv="" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php

$date_month 
date('m');
$date_year date('Y');
$date_day date('d');

//fijo el date de hoy
$Date "$date_year-$date_month-$date_day";

//coloco nombre al archivo con fecha
$filename "jere$Date.sql";

header("Pragma: no-cache");
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$filename");


$usuario "root";
$passwd "";
$bd "RedAdolescente";

//windows
$executa "C:\Archivos de programa\EasyPHP\mysql\bin\mysqldump.exe -u $usuario --password=$passwd --opt $bd";
system($executa$resultado);

//para Unix
//$executa = "mysqldump -u $usuario --password=$passwd --opt $bd";
//system($executa, $resultado);


if ($resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; }

?>

</body>
</html>
Y los errores que me lanza son:

Código:
Warning: Cannot add header information - headers already sent by (output started at c:\archivos de programa\easyphp\www\prueba\tmp8q1hqolz89.php:9) in c:\archivos de programa\easyphp\www\prueba\tmp8q1hqolz89.php on line 21

Warning: Cannot add header information - headers already sent by (output started at c:\archivos de programa\easyphp\www\prueba\tmp8q1hqolz89.php:9) in c:\archivos de programa\easyphp\www\prueba\tmp8q1hqolz89.php on line 22

Warning: Cannot add header information - headers already sent by (output started at c:\archivos de programa\easyphp\www\prueba\tmp8q1hqolz89.php:9) in c:\archivos de programa\easyphp\www\prueba\tmp8q1hqolz89.php on line 23

Warning: Cannot add header information - headers already sent by (output started at c:\archivos de programa\easyphp\www\prueba\tmp8q1hqolz89.php:9) in c:\archivos de programa\easyphp\www\prueba\tmp8q1hqolz89.php on line 24

Warning: Cannot add header information - headers already sent by (output started at c:\archivos de programa\easyphp\www\prueba\tmp8q1hqolz89.php:9) in c:\archivos de programa\easyphp\www\prueba\tmp8q1hqolz89.php on line 25

Error ejecutando comando: C:\Archivos de programa\EasyPHP\mysql\bin\mysqldump.exe -u root --password= --opt RedAdolescente
Por cierto Cain, ¿ como me aseguro que puedo utilizar el comando system() (o exec(), passthru(), ...), ya que no se si mi servidor esta tiene configurado el PHP de modo seguro?.

Bueno una ves mas Gracis,pues de verdad necesito resolver to para mi tesis de grado que es el proximo lunes y necesito este modulo para respaldar la base de datos. Como ya se habaran dado estoy trabajando con el EasyPHP. Bueno hasta luego.
__________________
Atte. Jere
Agradezco su pronta colaboración.
;-) :arriba:Hoy por mi, mañana por ti:arriba: ;-)
  #7 (permalink)  
Antiguo 19/11/2003, 12:33
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
verifica...

a mi el codigo que postee me funciona al pelo.

debes tener algun error..

verifica si...

1. la extension del archivo es .php

2. borrale el <html>, <title> dejale nada mas lo que esta para php

3. ejecuta el archivo desde otro link. <a href="backupdb.php">backup BD</a>

4. asegurate de la ruta bien donde este el mysqldump.exe, por ejemplo yo lo tengo en C:\mysql\bin pero tu tienes algun programa no se q es..
  #8 (permalink)  
Antiguo 19/11/2003, 16:14
 
Fecha de Ingreso: noviembre-2002
Ubicación: cordoba
Mensajes: 59
Antigüedad: 21 años, 5 meses
Puntos: 0
Maestro!!!
Con Mysql-fron, lo solucionas en un periquete
  #9 (permalink)  
Antiguo 19/11/2003, 16:33
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
Exclamación

la idea es automatizarlo y prescindir de esos programas que lo que hacen es comer recursos de la pc


echele cabeza!




  #10 (permalink)  
Antiguo 19/11/2003, 19:53
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Esos errores son porque envias html antes de enviar los headers, y no puedes hacer eso.
Elimina todo eso que tienes antes de la etiqueta <?php y asegurate que no quede ningun espacio ni nada por el estilo.
Es mas, todo eso no servirá de nada, pues cuando ejecutes el script, te aparecera el cuadro de dialogo de descargas de tu navegador y "bajaras" el backup.

Saludos!
  #11 (permalink)  
Antiguo 19/11/2003, 19:59
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Para chequer las configuraciones de tu server basta con hacer:
Código PHP:
phpinfo(); 
  #12 (permalink)  
Antiguo 19/11/2003, 21:15
Avatar de Jeremias  
Fecha de Ingreso: agosto-2003
Ubicación: Caracas
Mensajes: 504
Antigüedad: 20 años, 8 meses
Puntos: 0
Aun nada

Hola de nuevo y gracias de verdad por su ayuda, pero creo que aun la sigo necesitando, ya cambie el codigo y le quite todo lo HTML y deje solo lo php y quite los espacio y desde otra pagina le puse un vinculo para que llamara a ese archivo y efectivamente se abri la ventana para descargar y guardar el archivo, y efectivamente lo hizo, PERO cuando voy abro el documento .sql tiene el siguiente contenido:

Cita:
<H1>Error ejecutando comando: C:\Archivos de programa\EasyPHP\mysql\bin\mysqldump.exe -u root --password= --opt RedAdolescente</H1>
El codigo de php quedo asi, se los vuelvo a escribir por si acaso:
Código PHP:
<?php
$date_month 
date('m');
$date_year date('Y');
$date_day date('d');
//fijo el date de hoy
$Date "$date_year-$date_month-$date_day";
//coloco nombre al archivo con fecha
$filename "jere$Date.sql";
header("Pragma: no-cache");
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$filename");
$usuario "root";
$passwd "";
$bd "RedAdolescente";
//windows
$executa "C:\Archivos de programa\EasyPHP\mysql\bin\mysqldump.exe -u $usuario --password=$passwd --opt $bd";
system($executa$resultado);
//para Unix
//$executa = "mysqldump -u $usuario --password=$passwd --opt $bd";
//system($executa, $resultado);
if ($resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; }
?>
Ok AHORA LO QUE PIENSO ES LO SIGUIENTE: puede que sea lo que me dijo Cain sobre el PHP en modo seguro, que impida que ejecuta ciertos comandos, y entonces hago lo que me dijo fran86 de poner el phpinfo(); y si se me abre un pagina con mucha informacion de la configuracion de php y muchas otras cosas, entonces mi pregunta es ¿exactamente en que seccion de todas esas categorias que me aparecen en esa pagina consigo o veo si lo tengo modo SEGURO el php, porque veo varias categorias y no se cual revisar y me gustaria que me dijeran que busco exactamente?

No se si sea esto pero en el cuadro principal que me aparece en esta pagina hay algo que dice "Thread Safety: enabled " no se si sea eso. Y si ese fuese el caso que esta configurado de modo SEGURO o algo asi como me comentaron, pues como hago para resolver eso, porque de verdad necesito poder hacer este respaldo.
Bueno una ves mas gracias y sigo contando con ustedes. BYE
__________________
Atte. Jere
Agradezco su pronta colaboración.
;-) :arriba:Hoy por mi, mañana por ti:arriba: ;-)
  #13 (permalink)  
Antiguo 20/11/2003, 00:42
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Busca donde dice safe_mode.
Tambien te puede interesar disable_functions (lista de todas las funciones deshabilitadas por el administrador)
  #14 (permalink)  
Antiguo 20/11/2003, 03:11
Avatar de Jeremias  
Fecha de Ingreso: agosto-2003
Ubicación: Caracas
Mensajes: 504
Antigüedad: 20 años, 8 meses
Puntos: 0
Pregunta me sale esto

Hola mira lo que dice el safe_mode Off Off
Que significa? me sirve el codigo o no por tener eso asi?
En fin que tengo que hacer para que me funcione el codigo DE EVRDAD NECEITO HACER QUE SE RESPALDE LA BASE DE DATOS, Si alguien me tiene un solucion, cualquiera que sea pues se los agradeceria enormemente,
__________________
Atte. Jere
Agradezco su pronta colaboración.
;-) :arriba:Hoy por mi, mañana por ti:arriba: ;-)
  #15 (permalink)  
Antiguo 20/11/2003, 03:23
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Bien, copia

C:\Archivos de programa\EasyPHP\mysql\bin\mysqldump.exe -u root --password= --opt RedAdolescente

en tu linea de comandos. Si te falla, es que esta mal la linea de comandos, no es culpa de PHP.

Y si te falla, prueba

"C:\Archivos de programa\EasyPHP\mysql\bin\mysqldump.exe" -u root --password= --opt RedAdolescente

con las comillas. ¿Por que? Porque el MSDos no se lleva bien con los espacios en los nombres de ficheros directorios. Para el, sin las comillas estas intentando ejecutar c:\Archivos pasandole como parametros de programa\.... .

Asi que si con comillas te funciona, ponlas en el system:
Código PHP:
$executa "\"C:\Archivos de programa\EasyPHP\mysql\bin\mysqldump.exe\" -u $usuario --password=$passwd --opt $bd";
system($executa$resultado); 
Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #16 (permalink)  
Antiguo 20/11/2003, 03:47
Avatar de Jeremias  
Fecha de Ingreso: agosto-2003
Ubicación: Caracas
Mensajes: 504
Antigüedad: 20 años, 8 meses
Puntos: 0
Hol josemi

Hola Josemi y todos los demas que han querido ayudarme, pero lamentablemente queria decirles que aun con todos esos intentos no resulto nada, siempre me crea el archivo .sql pero con el siguiente contenido:

Código:
<H1>Error ejecutando comando: C:\Archivos de programa\EasyPHP\mysql\bin\mysqldump.exe -u root --password= --opt RedAdolescente</H1>
Bueno de verdad ya me da pena con ustedes estar molestandoloes tantos pero ya me estoy resignando como a que eso no me quiere resultar en mi maquina, pero de verdad si alguien mas sabe otras posibles soluciones se los agradesco, tengo oportunidad de resolver esto hasta antes del proximo lunes que presento mi tesis. BUENO GRACIAS
__________________
Atte. Jere
Agradezco su pronta colaboración.
;-) :arriba:Hoy por mi, mañana por ti:arriba: ;-)
  #17 (permalink)  
Antiguo 20/11/2003, 04:57
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
¿Has probado a ejecutar directamente ese comando en una ventana MSDOS? Porque puede que ese sea el fallo, que la linea de comandos sea incorrecta. Una vez que consiguas ejecutar la linea en una ventana MSDOS, ya seria cuestion de PHP. Pero primero asegurate que la linea de comandos es correcta.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #18 (permalink)  
Antiguo 20/11/2003, 06:00
Avatar de Jeremias  
Fecha de Ingreso: agosto-2003
Ubicación: Caracas
Mensajes: 504
Antigüedad: 20 años, 8 meses
Puntos: 0
Aja en msDOS si funciono pero ahora que???

Josemi sabes que hice lo que dijiste y ejecute esta sentencia en el msDOS:

"C:\Archivos de programa\EasyPHP\mysql\bin\mysqldump.exe" -u root --password= --opt RedAdolescente
y si me mostro todo el codigo que necesito que se guarde en el archivo de texto .sql

Ahora que? porque vi todo el codigo de la base de datos con sus estructuras y datos, pero ahora que debo hacer para que el codigo terminde funcionar
que tengo malo? que tengo que acomodar o hacer para terminar de solucionar esto??? bueno espero tu pronta respuesta BYE Y UN MILLON DE GRACIAS POR TU AYUDA
__________________
Atte. Jere
Agradezco su pronta colaboración.
;-) :arriba:Hoy por mi, mañana por ti:arriba: ;-)
  #19 (permalink)  
Antiguo 20/11/2003, 06:37
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Y estas seguro que le has añadido las " a la cadena de tu script. Porque en el ultimo mensaje de error no se ven. Tendria que ser algo como:

$executa = "\"C:\\Archivos de programa\\EasyPHP\\mysql\\bin\\mysqldump.exe\" -u $usuario --password=$passwd --opt $bd";

Tambien podrias probar si si funciona el system. Haz un

system("dir",$res);
if (!$res) echo 'no va system';

Tambien prueba a poner:

error_reporting(E_ALL);

al comienzo del script para ver todos los posibles mensajes de error.

En fin, que si se me ocurre algo mas, ya te comento.

Suerte.

PD: Yo he probado el codigo en local, y parece funcionar. Puede ser que sea problema de tu configuracion. ¿Que sistema operativo es? No vaya a ser un lio de permisos de ejecucion.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #20 (permalink)  
Antiguo 20/11/2003, 09:59
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Por cierto, podrias pobrar esta otra opcion: http://www.forosdelweb.com/showthrea...&postid=538681

suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #21 (permalink)  
Antiguo 20/11/2003, 15:12
Avatar de Jeremias  
Fecha de Ingreso: agosto-2003
Ubicación: Caracas
Mensajes: 504
Antigüedad: 20 años, 8 meses
Puntos: 0
Gracias por tu ayuda

Nos funciono el codigo de la pagina que nos distes, lo unicoes que respalda por tabla, pero si nos sirve.

Tambien hicimos las pruebas que nos dijistes pero en ese nos crea el archivo de texto con la informacion pero al intentar recobrar esos datos desde la base de datos por medio de ese .txt nos lanza error. De todas maneras muchas gracias por tu gran ayuda. GRACIAS!!!
__________________
Atte. Jere
Agradezco su pronta colaboración.
;-) :arriba:Hoy por mi, mañana por ti:arriba: ;-)
  #22 (permalink)  
Antiguo 20/11/2003, 15:24
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, me alegro que lo hayais solucionado. Teniendo en cuenta lo apurados de tiempo, es mejor encontrar una solucion que funcione, que enredarse en solucionar la que no te funciona.

Despues con tranquilidad podeis volver a esta para averiguar por que a vosotros no os funcionaba. Mas que nada por amor propio

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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




La zona horaria es GMT -6. Ahora son las 03:52.