Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/03/2010, 04:31
Masane
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Metadatos usando PDO

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 original
  1. function createBackup()
  2.       {
  3.         $key = "Tables_in_".$this->bdconfig["database"];
  4.         $cont = 0;
  5.         $query = "SHOW TABLES";
  6.        
  7.         $peticion = $this->conexion->prepare($query);
  8.        
  9.         $peticion->execute();
  10.      
  11.         while($tables = $peticion->fetch())
  12.         {          
  13.           $table = $tables[$key];
  14.              
  15.           $backup .= "/***************************
  16.                        Script de la tabla '".$table."'
  17.                       ***************************/
  18.                       CREATE TABLE `".$table."` (";
  19.            
  20.           $query = "SHOW COLUMNS FROM ".$table;
  21.          
  22.           $peticion2 = $this->conexion->prepare($query);
  23.          
  24.           $peticion2->execute();
  25.          
  26.           while($column = $peticion2->fetch())
  27.           {      
  28.             $primary_key;
  29.                          
  30.             if ($column["Null"] == "NO")
  31.             {
  32.               $null = "NOT NULL";
  33.             }
  34.             else
  35.             {
  36.               $null = "NULL";
  37.             }
  38.            
  39.             if ($column["Key"] == "PRI")
  40.             {
  41.               $primary_key = $column["Field"];
  42.             }
  43.            
  44.             $backup .= "`".$column["Field"]."` ".$column["Type"]." DEFAULT '".$column["Default"]."' ".$null." ".$columns["Extra"]." ,
  45.            ";              
  46.           }        
  47.          
  48.           $backup .= "PRIMARY KEY ( `".$primary_key."` ) )
  49.            
  50.          ";
  51.            
  52.           $backup = str_replace("DEFAULT ''", "", $backup);  
  53.            
  54.           // El resto del código para el backup
  55.         }
  56.  
  57.         return $backup;
  58. }

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 ;) .