Foros del Web » Programando para Internet » PHP »

Actualizar tablas en comun

Estas en el tema de Actualizar tablas en comun en el foro de PHP en Foros del Web. 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. ...
  #1 (permalink)  
Antiguo 24/07/2014, 09:01
 
Fecha de Ingreso: enero-2014
Mensajes: 17
Antigüedad: 10 años, 10 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
  #2 (permalink)  
Antiguo 24/07/2014, 11:53
 
Fecha de Ingreso: enero-2014
Mensajes: 10
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Actualizar tablas en comun

Lo que generalmente hago es usar una tabla temporal a la cual le paso sólo los registros que me interesan de cada base y al finalizar actualizo con Update ambas bases. Haz una copia de tus 20 tablas pero no uses DROP ya que con eso estás borrando tus tablas, por eso es que luego te aparecen 250 tablas y no 20 como al principio. Una vez q tengas tus 20 tablas temporales, actualizas sólo lo q corresponda con el UPDATE.
Saludos

Etiquetas: comun, mysql, select, sql, tabla, tablas
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




La zona horaria es GMT -6. Ahora son las 14:36.