PHP:¿Cómo exportar mi base de datos a un archivo 'archivo.sql'?

De Foros del Web

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á ... envía a descargar el "dump" (volcado de datos y estructura) de la Base de datos seleccionada, incluído todas sus tablas.

Código PHP:

<? 
// Nombre del archivo de con el cual queremos que se guarde la base de datos 
$filename = "fichero.sql";  
// Cabeceras 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 ha realizado bien, si no es así, mostrará un mensaje de error 
if ($resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; } 
 
?> 

Nota: Este código es válido si PHP se está ejecutando en Windows. En caso de ejecutarse en Linux sustituir:

Código PHP:

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

por:

Código PHP:

$executa = "/mysql/bin/mysqldump -u $usuario --password=$passwd --opt $bd"; 
  • Las rutas indicadas son hacia la correspondiente ubicación física de mysqldump (o mysqldump.exe) en sus sistemas ...

Si se desea que el archivo generado ($fichero.sql) lo queremos dejar en el propio servidor (por ejemplo para hacer backups de esa BD Mysql automáticos lanzados por algún script nuestro ...) usar (en lugar de la anterior $executa): (nótese el > $fichero )

Código PHP:

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

Y ... quitar las cabeceras header() que se usan (todas).


--mdk 31 Mar 2003

Este artículo es parte de las FAQs de PHP y el Manual de PHP.

Herramientas personales