Bueno, al final después de mucho pelearme con el código he conseguido hacer algo medianamente decente.
Esto que os dejo es una función de una clase que he creado para gestionar los accesos a la base de datos.
Código PHP:
Ver originalfunction createBackup()
{
$key = "Tables_in_".$this->bdconfig["database"];
$cont = 0;
$query = "SHOW TABLES";
$peticion = $this->conexion->prepare($query);
$peticion->execute();
while($tables = $peticion->fetch())
{
$table = $tables[$key];
$backup .= "/***************************
Script de la tabla '".$table."'
***************************/
CREATE TABLE `".$table."` (";
$query = "SHOW COLUMNS FROM ".$table;
$peticion2 = $this->conexion->prepare($query);
$peticion2->execute();
while($column = $peticion2->fetch())
{
$primary_key;
if ($column["Null"] == "NO")
{
$null = "NOT NULL";
}
else
{
$null = "NULL";
}
if ($column["Key"] == "PRI")
{
$primary_key = $column["Field"];
}
$backup .= "`".$column["Field"]."` ".$column["Type"]." DEFAULT '".$column["Default"]."' ".$null." ".$columns["Extra"]." ,
";
}
$backup .= "PRIMARY KEY ( `".$primary_key."` ) )
";
// El resto del código para el backup
}
return $backup;
}
Espero que os sirva, al menos la parte de los metadatos, que es lo complicado, el resto del volcado de datos es fácil de hacer ;) .