sql >> Databáze >  >> RDS >> Mysql

Jak pomocí Pentaho Kettle načtu více tabulek z jedné tabulky při zachování referenční integrity?

Dal jsem dohromady ukázku transformace (klikněte pravým tlačítkem a vyberte odkaz uložit) na základě toho, co jste poskytli. Jediný krok, na kterém se cítím trochu nejistý, jsou poslední vstupy do tabulky. V podstatě zapisuji data spojení do tabulky a nechávám je selhat, pokud již existuje konkrétní vztah.

poznámka:

Toto řešení ve skutečnosti nesplňuje požadavek "Všechny přístupy by měly zahrnovat některé z validace a strategie vrácení zpět, pokud by vložení selhalo nebo selhalo při zachování referenční integrity." kritérií, i když to pravděpodobně neprojde. Pokud opravdu chcete nastavit něco složitého, můžeme, ale toto by vám s těmito transformacemi rozhodně mělo pomoci.

Datový tok za krokem

1. Začneme čtením ve vašem souboru. V mém případě jsem to převedl na CSV, ale karta je také v pořádku.

2. Nyní vložíme jména zaměstnanců do tabulky Zaměstnanci pomocí combination lookup/update .Po vložení připojíme zaměstnanec_id k našemu datovému proudu jako id a odeberte EmployeeName z datového toku.

3. Zde pouze používáme krok Vybrat hodnoty k přejmenování id pole na zaměstnanec_id

4. Vkládejte názvy pracovních míst stejně jako my zaměstnanci a připojte ID názvu k našemu datovému proudu, čímž také odstraníte JobLevelHistory z datového toku.

5. Jednoduché přejmenování id názvu na id_názvu (viz krok 3)

6. Vložte kanceláře, získejte ID, odstraňte OfficeHistory ze streamu.

7. Jednoduché přejmenování id kanceláře na office_id (viz krok 3)

8. Zkopírujte data z posledního kroku do dvou streamů s hodnotami employee_id,office_id a employee_id,title_id respektive.

9. K vložení dat spojení použijte vložku tabulky. Vybral jsem to tak, aby se ignorovaly chyby vložení, protože mohou existovat duplikáty a omezení PK způsobí, že některé řádky selžou.

Výstupní tabulky




  1. připojení externí databáze mysql s php

  2. získat data z databáze mysql pro použití v javascriptu

  3. Změna primárního klíče MySQL, pokud existují omezení cizího klíče

  4. MySQL:Překročena doba čekání na zámek