Autor Tema: Traspasar registros de una tabla a otra  (Leído 704 veces)

Desconectado M4nu

  • PHPerit@
  • *
  • Mensajes: 6
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Traspasar registros de una tabla a otra
« en: 25 de Septiembre de 2013, 21:43:32 pm »
Buenos noches, pongo este post aunque supongo que habrá mucha información al respecto, pido disculpas de antemano.

Me explico, debo volcar toda la información referente a users de una tabla de una base de datos a otra que será la que se pase a utilizar.

Mi pregunta es si me podrías mostrar un ejemplo de script que inserte todos los registros de una tabla (customer) a otra tabla también llamada customer de otra bd, aunque la tabla destino tenga más campos que la origen, por ejemplo, la tabla customer destino tiene 32 campos y la origen 21, aunque tienen campos comunes las dos.

Saludos y posteo esto porque es una tarea que me han encasquetado y es urgente, si necesitáis que facilite o explique mejor cualquier cosa no dudéis en decirlo

Saludos y si pudierais ayudarme os lo agradecería mil.

Comunidad PHPeros

Traspasar registros de una tabla a otra
« en: 25 de Septiembre de 2013, 21:43:32 pm »

Desconectado M4nu

  • PHPerit@
  • *
  • Mensajes: 6
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:Traspasar registros de una tabla a otra
« Respuesta #1 en: 27 de Septiembre de 2013, 10:16:27 am »
Estoy probando con este pero no me añade los registros:

Código: [Seleccionar]
<?php

// Si la base de datos tiene muchos datos habilitar esto
set_time_limit(0);


header(&#39;Content-type: text/plain&#39;);

$conexion mysql_connect(&#39;localhost&#39;, &#39;root&#39;, &#39;mi_contraseña&#39;);

// De que base de datos vamos a tomar las tablas
$db_from = &#39;bd_origen&#39;;
// A que base de datos vamos a migrar las tablas
$db_to = &#39;bd_destino&#39;;
// 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);
}

// 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 
"Migrada la estructura de la 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";
}

?>

He pensado que el hecho de que no muestre errores pero que no inserte los registros pueda deberse a que la tabla destino tiene 32 campos y la origen 21, si podéis hecharme una mano con lo que debería modificar para que funcionara.

Comentar también que solo tengo una tabla en cada base de datos y se llama igual, por tanto en principio debería funcionar esto (reconozco que es presumir mucho), pero voy bastante perdido.

Gracias.
« Última modificación: 27 de Septiembre de 2013, 10:38:40 am por M4nu »

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:Traspasar registros de una tabla a otra
« Respuesta #2 en: 27 de Septiembre de 2013, 21:46:07 pm »
Yo tenia un script que hacia eso déjame buscarlo... Y aquí postee uno llamado SaveSQL, que hacía algo parecido.

Saludos

Desconectado M4nu

  • PHPerit@
  • *
  • Mensajes: 6
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:Traspasar registros de una tabla a otra
« Respuesta #3 en: 28 de Septiembre de 2013, 14:05:31 pm »
Pues si puedes postearlo antes del Lunes, si no me miro tu script del post que mencionabas: http://www.phperos.net/foro/index.php?topic=5732.msg41890#msg41890

Muchas gracias y cualquier aportación os la agradeceré.

Desconectado iStocker

  • PHPer@ Fijo
  • ***
  • Mensajes: 104
  • Karma: 6
  • ~ єssєитιαʟ ~
    • Ver Perfil
Re:Traspasar registros de una tabla a otra
« Respuesta #4 en: 29 de Septiembre de 2013, 01:51:28 am »
Sé que no te daré una respuesta válida en teoría, pero te recomiendo MUCHO no usar PHP para ninguna exportación o importación de bases de datos, tarda mucho y es un proceso que consume muchos recursos del sistema.
Si tienes acceso a una consola de comandos/terminal te recomiendo hacer un script o utilizar una aplicación consola programada por ti, eso te ahorrará bastante tiempo. Todo ésto te lo digo por experiencia, lo que hace el interprete de PHP en 1 hora lo puedes hacer en 10 minutos con la consola o la terminal, y si lo haces como una aplicación web tardará mucho más, últimamente yo únicamente utilizo la terminal o la consola para este tipo de tareas ya que manejar bases de datos muy grandes es una tarea que se dificulta por la información.

Saludos y suerte.
¡FUUU!


Cita de: Mary Shaw
Menos del 10% del código tienen que ver directamente con el propósito del sistema; el resto tiene que ver con la entrada y salida, validación de datos, mantenimiento de estructuras de datos y otras labores domésticas



[/cent

Desconectado M4nu

  • PHPerit@
  • *
  • Mensajes: 6
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:Traspasar registros de una tabla a otra
« Respuesta #5 en: 29 de Septiembre de 2013, 18:05:13 pm »
Sé que no te daré una respuesta válida en teoría, pero te recomiendo MUCHO no usar PHP para ninguna exportación o importación de bases de datos, tarda mucho y es un proceso que consume muchos recursos del sistema.
Si tienes acceso a una consola de comandos/terminal te recomiendo hacer un script o utilizar una aplicación consola programada por ti, eso te ahorrará bastante tiempo. Todo ésto te lo digo por experiencia, lo que hace el interprete de PHP en 1 hora lo puedes hacer en 10 minutos con la consola o la terminal, y si lo haces como una aplicación web tardará mucho más, últimamente yo únicamente utilizo la terminal o la consola para este tipo de tareas ya que manejar bases de datos muy grandes es una tarea que se dificulta por la información.

Saludos y suerte.

Te refieres a programar una aplicación para Linux (el server es linux) para pasar el contenido de una tabla a otra?, el problema es que ni idea de programación en Linux y ¿de que forma podría ejecutarla?.

La idea era hacerlo con PHP, que más o menos empiezo a entender que hace cada parte del script, pero ni idea de cómo hacer que funcione correctamente, l tiempo que tarde a no ser que sea simple de implementar lo que dices, no me preocupa mucho.

Ya dirás algo sobre esto, me parece interesante la opción, pero ni idea de si es viable.

Saludos y gracias por los aportes.