La migración de datos consiste en la transferencia de materiales digitales de un origen de datos a otro. Migrar datos desde una tabla a otra puede no ser complicado, el problema viene cuando es entre dos bases de datos diferentes, ahí realizar un proceso automático toma un poco mas de tiempo. Por esto el siguiente script explica paso a paso que se debe hacer de forma sencilla usando PHP.
En el ejemplo a continuación vamos a migrar los datos de una tabla llamada "cnt_terceros" de la base de datos BD1 hacia la tabla cnt_validacion de la BD2. Manos a la obra.
1. Traemos la cabecera de texto plano y llamamos el conexión a la base de datos:
header('Content-type: text/plain');
$conexion = mysql_connect('mysql', 'usuario', 'password');
2. Escogemos de que base de datos bamos a traer los datos y luego hacia que base de datos va a ir la información:
// De que base de datos vamos a tomar las tablas
$db_from = 'BD1';
// A que base de datos vamos a migrar las tablas
$db_to = 'BD2';
// Con los datos que traen
$data = true;
3. Con una consulta se debe leer la tabla que se guarda en db_from:
// Leemos todas las tablas de db_from
$sql = "SELECT * FROM $db_from";
$result = mysql_query($sql);
//listamos las tablas con un array
$list_tables = array();
//recorremos el resultado de la consulta con un ciclo
while ($row = mysql_fetch_assoc($result))
{
$list_tables[] = current($row);
}
4. Este paso es opcional, se usa para migrar la estructura de la tabla de la BD1 para la BD2, se usa si la tabla no se ha creado en la BD2 y migra la estructura completa de las columnas de la tabla. Si ya se tiene la tabla creada en la segunda base de datos este paso se omite:
// 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";
}
}*/
5. Si condicionamos con true los datos comenzamos a pasar la información de la tabla antigua a la nueva. Aveces solo se necesita migrar la estructura, en este caso se necesitan los datos:
// Si data es true pasamos los datos de cada tabla vieja a la nueva
if ($data)
{
//echo "Se borran los datos de la tabla cnt_validacion antes de migrarlos \n";
$sql = "TRUNCATE $db_to.cnt_validacion";
$result = mysql_query($sql);
//echo "Comienza la migracion de datos de cnt_terceros \n";
$sql = "INSERT INTO $db_to.cnt_validacion (nit, nombre) SELECT nit_ter, nombre_ter FROM $db_from.cnt_terceros";
$result = mysql_query($sql);
if ($result){
echo "Migrados datos de la tabla $db_from.cnt_terceros a $db_to.cnt_validación \n";
}#end if
}#end if
Se debe tener cuidado con este tipo de migración, al finalizar el proceso revisar al detalle la tabla para asegurarnos que ha migrado correctamente. Si se migra la estructura revisar que hayan pasado los tipos de campo, normalmente las llaves primarias y foráneas no pasan en la migración.
Espero les haya servido este código. Recuerden que la idea es colocar este script automático más adelante explicaremos eso por ahora se debe simplemente ejecutar desde la url.
No hay comentarios:
Publicar un comentario