sql >> Base de Datos >  >> RDS >> Mysql

Usando Pentaho Kettle, ¿cómo cargo varias tablas desde una sola tabla mientras mantengo la integridad referencial?

Reuní una muestra de transformación (haga clic con el botón derecho y elija guardar enlace) en base a lo que proporcionaste. El único paso en el que me siento un poco inseguro es en las entradas de la última tabla. Básicamente, escribo los datos de combinación en la tabla y dejo que falle si ya existe una relación específica.

nota:

Esta solución realmente no cumple con "Todos los enfoques deben incluir algo de validación y una estrategia de reversión en caso de que falle una inserción o no se mantenga la integridad referencial". criterios, aunque probablemente no fallará. Si realmente desea configurar algo complejo, podemos hacerlo, pero esto definitivamente debería ayudarlo con estas transformaciones.

Flujo de datos por pasos

1. Comenzamos con la lectura en su archivo. En mi caso, lo convertí a CSV pero la pestaña también está bien.

2. Ahora vamos a insertar los nombres de los empleados en la tabla de empleados usando una combination lookup/update .Después de la inserción, agregamos el employee_id a nuestro flujo de datos como id y elimine el EmployeeName del flujo de datos.

3. Aquí solo estamos usando un paso Seleccionar valores para cambiar el nombre del id campo a employee_id

4. Inserte títulos de trabajo como lo hicimos con los empleados y agregue la identificación del título a nuestro flujo de datos y también elimine el JobLevelHistory del flujo de datos.

5. Cambio de nombre simple de la identificación del título a title_id (consulte el paso 3)

6. Inserte oficinas, obtenga identificaciones, elimine OfficeHistory de la transmisión.

7. Cambio de nombre simple de la identificación de la oficina a office_id (vea el paso 3)

8. Copie los datos del último paso en dos secuencias con los valores employee_id,office_id y employee_id,title_id respectivamente.

9. Utilice una inserción de tabla para insertar los datos de unión. Lo tengo seleccionado para ignorar los errores de inserción, ya que podría haber duplicados y las restricciones PK harán que algunas filas fallen.

Tablas de salida