Para pasar una tabla de una base de datos de MySQL a otra base de datos es muy sencillo con estos dos SQL:
Pasar la estructura de la tabla:
Código :
CREATE TABLE `bd_destino`.`nombre_tabla` LIKE `bd_fuente`.`nombre_tabla`
Pasar los datos de la tabla a la otra:
Código :
INSERT INTO `bd_destino`.`nombre_tabla` SELECT * FROM `bd_fuente`.`nombre_tabla`
Migración de Base de Datos MySQL con PHP
Conociendo estos sql, podemos automatizar la migración de una base de datos de forma muy sencilla con PHP. Aquí les dejo un script de ejemplo:
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('localhost', 'root', ''); // De que base de datos vamos a tomar las tablas $db_from = 'cristal_cristalab'; // A que base de datos vamos a migrar las tablas $db_to = 'migrarbd'; // 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"; } ?>
Advertencia
Existe la posibilidad de realizar la siguiente consulta
Código :
CREATE TABLE `bd_destino`.`nombre_tabla` SELECT * FROM `bd_fuente`.`nombre_tabla`
Crea una tabla con los campos y los datos pero nada más. Es decir, ignora los índices definidos y otros, por poner un ejemplo: las claves primarias NO se definen en la nueva tabla.
Espero les sirva, y si pueden compartirlo en otro lenguaje por ejemplo python (o simplemente quieren mejorar el script) la comunidad de cristalab se los agradecerá.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Kinduff el 15 de Enero de 2012
Por Freddie el 16 de Enero de 2012
Por Dano el 17 de Enero de 2012
pd. Apestas! (ahora si no me equivoque de post )
Por Luis el 19 de Enero de 2012
Para migrar tablas entre bases de datos que están en servidores distintos, ¿cuál sería la mejor manera?
Una opción es utilizar mysqldump para generar una exportación de toda la base de datos origen, de forma que luego podamos importarla en el servidor de destino.
¡gracias!
Por Fabio el 07 de Septiembre de 2013
Por vick90 el 03 de Junio de 2014
Por rut el 30 de Junio de 2014
Por ahc el 04 de Octubre de 2014
Por ahc el 04 de Octubre de 2014
Por Carlos Garcia el 25 de Octubre de 2016
Por rbg el 23 de Junio de 2019
pero si lo quieres copiar a otra db en otro servidor?
Se podria hacer? gracias
Por solisarg el 24 de Junio de 2019
Jorge