|

domingo, 23 de junio de 2013

Lo básico en PDI: migrando tablas entre bases de datos

Migracion

Bueno ahora vamos a realizar un ejercicio básico: migrar una tabla de dos bases diferentes.

En este caso voy a utilizar los gestores de base de datos Oracle Express Edition y MySQL Server Community. La idea, es copiar una tabla del usuario de ejemplo HR en Oracle y pasarla al esquema TEST de MySQL.

Desbloquear el usuario HR en Oracle


Si acabos de instalar Oracle Express Edition, el usuario HR esta bloqueado por defecto, por desbloquearlo nos conectamos con el usuario SYSTEM y la contraseña que definimos durante la instalación y ejecutamos los siguientes comandos:
ALTER USER HR ACCOUNT UNLOCK;
-- Cambia la contraseña
ALTER USER HR IDENTIFIED BY password;
 -- Da permiso de conexión y acceso de los objetos propios
GRANT CONNECT, RESOURCE TO HR;

Acceder al usuario TEST en MySQL


El usuario TEST de MySQL por defecto no tiene objetos creados. Inicialmente la conexión a Root se hace sin contraseña.

Creando la nueva transformación en PDI


Creamos una nueva transformación que vamos denominar tr_migrar_tabla. Vamos al panel izquierdo y vamos a rastrar un paso tipo Table Input y otro Table Output. Ahora creamos las dos conexiones, las cuales vamos a nombrar CONEX_ORACLE_HR y CONEX_MYSQL_TEST respectivamente. Para mayor información de cómo configurar conexiones podemos remitirnos a la entrada Configurando conexiones en Spoon.


Configurando la Tabla de Origen

En el  paso Table Input, vamos a elegir la conexión CONEX_ORACLE_HR. En el cuadro de texto SQL, escribimos la consulta

SELECT * FROM EMPLOYEES




Error Común: No  se deben usar el carácter punto y coma (;) para finalizar la sentencia en los Table Input.

Damos clic en el botón Preview para comprobar que nuestra consulta funciona correctamente. Nos dará la opción de elegir cuantas filas queremos previsualizar, normalmente 1000. Es importante que no se nos vaya la mano con el número de filas, si escribimos una cantidad muy grande podríamos tener problemas de memoria y bloquear la aplicación.


Crear un salo entre dos pasos


Para conectar dos pasos damos clic en la paso origen (Table Input), elegimos el icono con la flecha verde apuntando a la derecha y con clic sostenido conectamos con el paso destino (Table Output). En algunos casos nos dará a elegir entre dos opciones: Main output of Step o Error handling of Step, para la mayoría de los casos escogemos Main output of Step. Error handling of Step será tema de una nueva entrada sobre captura de errores.



Configurar la tabla de destino

Vamos a Table Output, elegimos la conexión CONEX_MYSQL_TEST, y en Target Table escribimos el nombre de la tabla de destino en este caso EMPLOYEES. Luego damos clic en el botón SQL, para que Pentaho automáticamente nos genere el Script de la tabla de destino en el esquema TEST. Lo revisamos y damos clic en Execute.


Finalizando esta configuración podemos ejecutar la transformación: Clic en la flecha verde "Run transformation" y luego en el diálogo que nos aparece, sobre el botón Launch.

Si la transformación se ejecuta correctamente, desde línea de comandos de MySQL podemos comprobar que la tabla este creada y con los datos migrados, ejecutando las siguientes sentencias:

use test;
SELECT * FROM EMPLOYEES LIMIT 10;


Este fue un ejercicio muy sencillo pero muy útil cuando estamos empezando en el manejo de Kettle, pero es suficiente para ver que es una herramienta muy gráfica y fácil de manejar. Realizamos un migración de una tabla sin necesidad de exportar los datos en archivos planos u otro formato, o sin siquiera intentar el engorroso proceso de conectar las bases de datos directamente. 

Espero que les haya sido de utilidad este post. ¡Que pasen un muy buen día y exitos!

1 comentario:

Related Posts Plugin for WordPress, Blogger...