Foros del Web » Programando para Internet » PHP »

Exportar Base de datos Mysql

Estas en el tema de Exportar Base de datos Mysql en el foro de PHP en Foros del Web. Alguien tiene por ahi algún script para exportar la base de datos ke digas a tu pc, con el nombre ke kieras? tipo lo de ...
  #1 (permalink)  
Antiguo 29/03/2003, 10:31
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Exportar Base de datos Mysql

Alguien tiene por ahi algún script para exportar la base de datos ke digas a tu pc, con el nombre ke kieras? tipo lo de phpmyadmin, solo ke no me sirve el phpmyadmin, kiero un script ke haga eso solo en concreto. He leido algo de una funcion dump, pero no me funciona correctamente, ya ke lei ke hay ke ejecutar un mysqldump o poner exec("mysqldump parametros base de datos > nombredelarchivo.sql") pero no me descarga.

Nota: Mi sistema operativo es windows, asi ke tendria ke funcionar en apache de windows no en el de linux, no se si hay alguna diferencia, pero alguna habrá :)
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #2 (permalink)  
Antiguo 29/03/2003, 22:24
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
MYSQLDUMP es exactamente lo que buscas. Tienes que pasarle el host, el user, el password y el nombre de la base de datos para que funcione.
__________________
No tengo firma ahora... :(
  #3 (permalink)  
Antiguo 30/03/2003, 04:36
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Ya estoy usando el comando mysqldump y me genera el archivo, pero el problema es ke me lo genera vacio. El script ke estoy poniendo es este, a ver si saben ke falla:

Código PHP:
<?
$filename 
"fichero.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="contraseña";
$bd="basededatos";

$executa "/mysql/bin/mysqldump -hlocalhost -u$usuario -p$passwd -opt $bd";
system($executa$resultado);

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

?>
El código lo cogí de este post: http://www.forosdelweb.com/showthrea...2Amysqldump%2A

solo ke ocurre lo ke ya mencione, me genera el archivo y me pregunta donde lo kiero guardar, pero cuando guarda el archivo, lo guarda sin el contenido de la base de datos ke le he dicho.
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)

Última edición por mdk; 30/03/2003 a las 06:16
  #4 (permalink)  
Antiguo 30/03/2003, 11:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm la opción "opt" su sintax es con -- (doble guión):

--opt Same as --add-drop-table --add-locks --all --quick --extended-insert --lock-tables --disable-keys

A todo esto .. tambien supongo que la ruta hacia el ejecutable mysqldump es correcta (y que usas Linux .. segun esa llamada ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 30/03/2003, 11:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La sintax correcta sería:

Windows:
Código PHP:
$executa "c:\\mysql\\bin\\mysqldump.exe -u $usuario --password=$passwd --opt $bd"
Linux:
Código PHP:
$executa "/mysql/bin/mysqldump -u $usuario --password=$passwd --opt $bd"
Las rutas .. indicar donde se encuentre .. mysqldump

Fijate bien en el manual de Mysql sobre la sintax de las opciones de mysqldump ..

Un saludo,

pd: (no sé como el anterior amigo del post donde sacastes el ejemplo le funcionaba ¬¬ )
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 30/03/2003, 14:19
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Cluster estoy en Windows, el mysql lo tengo en C:\Apache\MySql entonces supongo ke la linea seria:

Código PHP:
$executa "c:\\apache\\mysql\\bin\\mysqldump.exe -u $usuario --password=$passwd --opt $bd"
Pero sigue ocurriendome lo mismo, me pregunta donde kiero guardar el fichero, pero cuando lo guarda me lo guarda en blanco...

¿Es esta la mejor forma de exportar la base de datos mediante un Script?

[ Recuerdo que no me interesa hacerlo mediante ningun gestor de bases de datos como phpmyadmin ]

Si alguien se le ocurre xk ocurre esto le agradeceria enormemente su ayuda...
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #7 (permalink)  
Antiguo 30/03/2003, 14:47
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 22 años, 7 meses
Puntos: 6
Hmmm. tu scrip fuerza al navegador a guadar un archivo en tu disco duro pero pasa que no veo en eningun lado de donde tomala infomacion para enviartela...
tu script usa mysqldump lo que significa que este comando guardara el dump en algun lado. No se te ha ocurrido que te falte leer el archivo que creo mysqldump primero para que algo llegue a tu maquina???.
a hora al comando mysqldump necesita saber donde dejara los datos si no por defecto lo dejara en el direcotrio donde se esta ejecutando.
asi que yo cambiaria el contenido de tu variable executa por
Código PHP:
$executa "c:\\apache\\mysql\\bin\\mysqldump.exe -u $usuario --password=$passwd --opt $bd >$path"
donde path es la ruta completa por ejemplo al directorio de trabajo que tienes en el servidor..
Despues de eso lee el archivo con fopen y posterior a eso mandalo a la pantalla con un fpassthru ejemplo.
Código PHP:
$fp fopen($archivo'r');
fpassthru($fp);
fclose($fp); 
  #8 (permalink)  
Antiguo 31/03/2003, 09:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mdk ..

Usando el script que pusistes al principio (con las cabeceras HTTP para que sea enviado al navegador) Y usanlo mysqldump con los parámetros que puse a mi me funciona .. (en windows).

Lo que tienes que asegurarte bien es la ruta de donde se encuentre tu mysqldump y por supuesto que la Base de datos que ahí indicas y los datos de conexión a esta sean correctos.

Lo otro que puedes usar es ..
Quitando las cabeceras (header ..) y usando:

$executa = "c:\apache\mysql\bin\mysqldump.exe -u $usuario --password=$passwd --opt $bd > $fichero";

Con el > $fichero te va a generar el fichero.sql en el directorio del servidor donde ejecutes tu .php ... y luego tendras q bajartelo tu a mano (via FTP) o poner un link al fichero.sql para bajaterlo con el navegador "manualmente" ..

Un ejemplo de lo que genera (es una Base de datos con solo una tabla):

Cita:
-- MySQL dump 8.21
--
-- Host: localhost Database: usuarios
---------------------------------------------------------
-- Server version 3.23.49

--
-- Table structure for table 'autentificator'
--

DROP TABLE IF EXISTS autentificator;
CREATE TABLE autentificator (
ID smallint(6) unsigned NOT NULL auto_increment,
usuario tinytext NOT NULL,
pass tinytext NOT NULL,
nivel_acceso smallint(4) unsigned NOT NULL default '0',
PRIMARY KEY (ID),
UNIQUE KEY ID (ID)
) TYPE=MyISAM PACK_KEYS=1;

/*!40000 ALTER TABLE autentificator DISABLE KEYS */;

--
-- Dumping data for table 'autentificator'
--


LOCK TABLES autentificator WRITE;
INSERT INTO autentificator VALUES (1,'Admin','21232f297a57a5a743894a0e4a801fc3',0);

/*!40000 ALTER TABLE autentificator ENABLE KEYS */;
UNLOCK TABLES;
Un saludo,

pd: Herminio Heredia San .. Si al mysqldump lo le indicas salida > archivo.tal .. lo "tira" a "consola" (al buffer de salida) .. por eso se usan esas cabeceras HTTP para darlo al navegador para descarga .. Todo eso porqué se ejecuta via system() que ejecuta el comando y lo entrega al buffer de salida ..Si lo ejecutarmos con exec() .. tendríamos el resultado (la ejecución) en un array .. ahí si que debería usarse el file() o un "header -> echo .." para dejarlo en el servidor o entregarlo a descargar (sin usar > fichero.tal en la propia sentencia mysqldump ..)

__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 31/03/2003 a las 09:53
  #9 (permalink)  
Antiguo 31/03/2003, 09:53
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Cluster con las cabezeras ke tengo puestas, y poniendo la ruta. Esta vez si ke me genera el archivo en el disco duro con el contenido de la base de datos, pero... las cabeceras fuerzan a guardar un archivo con el mismo nombre, y cuando lo guardo me lo sigue guardando en blanco. Como tienes exactamente tu el codigo?
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #10 (permalink)  
Antiguo 31/03/2003, 09:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Código PHP:
<?
$filename 
"fichero.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="????";
$passwd="????";
$bd="usuarios";

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

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

?>
Uso IE 5.5 .. (esto de las cabeceras HTTP puede dar problemas con los navegadores .. así q revisalas .. o prueba diferentes navegadores ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 31/03/2003, 10:10
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Ok, muchisimas gracias Cluster ya me funciona perfectamente, pero he comparado mi codigo con el tuyo y no encuentro mucha diferencia... pero en esto de la programacíon no me parece extraño.

Ahora tengo planteada otra pregunta. ¿Para importar la base de datos al servidor como seria?
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #12 (permalink)  
Antiguo 31/03/2003, 10:16
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 22 años, 7 meses
Puntos: 6
Bueno en realidad mysqldump sin la opcion que mencionas crea un archivo nuevo en la salida standar. Pero entiendo y tienes razon que la mision de system es capturar la salida standar y mandarlo a pantalla. Buena observacion cluster y ni hablar eso me pasa por no fijarme en los detalles, nada raro en mi.
  #13 (permalink)  
Antiguo 30/11/2006, 03:50
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
jos, pos io lo estoy intentando y no lo consigo he utilizado el codigo que ha puesto cloudyx:

Código PHP:
$filename "fichero.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="xxx"
$passwd="xxx"
$bd="usuarios"

$executa "C:\\apache\\mysql\\bin\\mysqldump.exe -u $usuario --password=$passwd --opt $bd"
system($executa$resultado); 

if (
$resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; } 
Me crea un fichero.sql en el escritorio donde le digo que lo guarde pero me da el siguiente error:

Código HTML:
<H1>Error ejecutando comando: C:\wamp\mysql\bin\mysqldump.exe -u xxx --password=xxx --opt usuarios</H1> 
No se como se utiliza, io lo que hago es decirle a un enlace que me valla a prueba.php (donde está ese código) para que me lo ejecute....

No hay otro modo de hacerlo, o pasar la base de datos de mysql a excel o un simple txt?????????????? tengo un lío....

gracias a todos de antemano
saludoss!!!

Última edición por susaninhax; 30/11/2006 a las 03:51 Razón: ocultar datos personales
  #14 (permalink)  
Antiguo 30/11/2006, 05:10
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
Aporto mi granito de arena, resulta que estaba poniendo mal la dirección porque mi servidor es linux, así que busqué otro manera y he conseguido esta: creas un archivo llamado "respaldo.php" por ejemplo con este script:
Código PHP:
header("Content-type: application/vnd.ms-excel");  
header("Content-Disposition: attachment; filename=archivo.xls");  
//en la sigte linea colocar entre comillas el nombre del servidor mysql (generalmente, localhost) 
$servidor="tu host normalmente localhost"
//en la sigte linea colocar entre comillas el nombre de usuario 
$user="tu usuario"
//en la sigte linea colocar entre comillas la contraseña 
$pass="tu contraseña"
//en la sigte linea colocar entre comillas e nombre de la base de datos 
$db="nombre bd"
mysql_connect($servidor,$user,$pass); 
mysql_select_db($db); 
$qry=mysql_query("select * from ".$_GET['tabla']); 
$campos mysql_num_fields($qry); 
$i=0
echo 
"<table><tr>"
while(
$i<$campos){ 
echo 
"<td>"mysql_field_name ($qry$i); 
echo 
"</td>"
$i++; 

echo 
"</tr>"
while(
$row=mysql_fetch_array($qry)){ 
echo 
"<tr>"
 for(
$j=0$j<$campos$j++) { 
 echo 
"<td>".$row[$j]."</td>"
 } 
 echo 
"</tr>"

echo 
"</table>"
Se sube al servidor, y luego bastará con que en el navegador escribas
http://www.tu_dominio.com/tu_directo...ldo.php?tabla=
el_nombre_de_tu_tabla.

Gracias a todos
  #15 (permalink)  
Antiguo 30/11/2006, 05:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por susaninhax Ver Mensaje
Aporto mi granito de arena, resulta que estaba poniendo mal la dirección porque mi servidor es linux, así que busqué otro manera y he conseguido esta: creas un archivo llamado "respaldo.php" por ejemplo con este script:
Código PHP:
header("Content-type: application/vnd.ms-excel");  
header("Content-Disposition: attachment; filename=archivo.xls");  
//en la sigte linea colocar entre comillas el nombre del servidor mysql (generalmente, localhost) 
$servidor="tu host normalmente localhost"
//en la sigte linea colocar entre comillas el nombre de usuario 
$user="tu usuario"
//en la sigte linea colocar entre comillas la contraseña 
$pass="tu contraseña"
//en la sigte linea colocar entre comillas e nombre de la base de datos 
$db="nombre bd"
mysql_connect($servidor,$user,$pass); 
mysql_select_db($db); 
$qry=mysql_query("select * from ".$_GET['tabla']); 
$campos mysql_num_fields($qry); 
$i=0
echo 
"<table><tr>"
while(
$i<$campos){ 
echo 
"<td>"mysql_field_name ($qry$i); 
echo 
"</td>"
$i++; 

echo 
"</tr>"
while(
$row=mysql_fetch_array($qry)){ 
echo 
"<tr>"
 for(
$j=0$j<$campos$j++) { 
 echo 
"<td>".$row[$j]."</td>"
 } 
 echo 
"</tr>"

echo 
"</table>"
Se sube al servidor, y luego bastará con que en el navegador escribas
http://www.tu_dominio.com/tu_directo...ldo.php?tabla=
el_nombre_de_tu_tabla.

Gracias a todos
Gracias por el aporte ..

Sólo mencionar que en tu caso generas un documento Excel (Hoja de cálculo, planilla ..)

En los otros casos se genera un volcado SQL de datos de la estructuras y tablas (con sus datos) de la BBDD indicada. Esto es ideal para hacer backups o respaldos en general para "restaurar" la BBDD o tabla en forma rápida.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 21:11.