Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/07/2014, 09:01
danydenod
 
Fecha de Ingreso: enero-2014
Mensajes: 17
Antigüedad: 10 años, 11 meses
Puntos: 0
Actualizar tablas en comun

Hola a todos

Quiero afinar mi código ya que en este solo simulo un update que obviamente no hace bien por algunos detalles. Les explico.

Tengo 2 bases de datos 1 solo tiene 20 tablas (le llamaremos A) y la otra tiene 250 ( le llamaremos B), pero A y B tienen en común esas 20 tablas, es decir en A hay una tabla exactamente igual que B, con los mismos campos, pero con diferente información.

Entonces mi trabajo consistía en estar actualizando estas 20 tablas, es decir de A a B y de B a A, dependiendo de cual sea la mas actual (ese problema ya lo tengo resuelto).

Lo que hace mi código es que borra todas las tablas de la base de datos que sera actualizada y luego pasa todas las tablas de la base de datos actualizada una especie de reemplazo y funciona bien el detalles es que pasa todas las tablas, las 250 y al final ambas bases de datos A y B quedan con 250 tablas.

Por lo pronto lo estoy manejando asi (se que esta muy mal), por que no se dominar muy bien el update, o mas bien no se como codificarlo en este caso, les paso mi código para ver si me pueden ayudar:
Código:
<?php
// Si la base de datos tiene muchos datos habilitar esto
set_time_limit(0);
header('Content-type: text/plain');
$conexion = mysql_connect('mi_servidor', 'usuario', 'Contraseña');
// De que base de datos vamos a tomar las tablas
$db_from = 'Basededatos_B';
// A que base de datos vamos a migrar las tablas
$db_to = 'Basededatos_A';
// Con los datos o no
$data = true;
// Leemos todas las tablas de db_from
$sql = "SHOW TABLES FROM $db_from";
$result = mysql_query($sql);
$list_tables = array();
while ($row = mysql_fetch_assoc($result))
{
   $list_tables[] = current($row);
}
//Borrar tablas si existen
foreach ($list_tables as $tbname){
   $sql = "DROP TABLE IF EXISTS $db_to.$tbname";
   $result = mysql_query($sql);
   if ($result)
   {
      echo "Actualizada de la tabla $db_from.$tbname a $db_to.$tbname \n";
   }
}

// Migramos las estructuras de las tablas
foreach ($list_tables as $tbname){
   $sql = "CREATE TABLE IF NOT EXISTS $db_to.$tbname LIKE $db_from.$tbname";
   $result = mysql_query($sql);
   if ($result)
   {
      echo "Actualizada tabla $db_from.$tbname a $db_to.$tbname \n";
   }
}
// Si data es true pasamos los datos de cada tabla vieja a la nueva
if ($data)
{
   echo "Comienza la migracion de datos \n";
   foreach ($list_tables as $tbname)
   {
      $sql = "INSERT INTO $db_to.$tbname SELECT * FROM $db_from.$tbname ";
      $result = mysql_query($sql);
      if ($result)
      {
         echo "Migrados datos de la tabla $db_from.$tbname a $db_to.$tbname \n";
      }
   }
   echo "Termina la migracion de datos \n";
}

?>
No se si se puedan hacer este tipo de update a este nivel. Espero y me puedan ayudar.

SAludos