sql >> Database >  >> RDS >> Mysql

Hoe laad ik met Pentaho Kettle meerdere tabellen van een enkele tabel met behoud van referentiële integriteit?

Ik heb een voorbeeld samengesteld transformatie (klik met de rechtermuisknop en kies link opslaan) op basis van wat je hebt opgegeven. De enige stap waar ik me een beetje onzeker over voel, zijn de laatste tabelinvoer. Ik schrijf in feite de join-gegevens naar de tabel en laat het mislukken als er al een specifieke relatie bestaat.

opmerking:

Deze oplossing voldoet niet echt aan de "Alle benaderingen moeten een deel van de validatie bevatten en een rollback-strategie als een insert mislukt of de referentiële integriteit niet behoudt." criteria, hoewel het waarschijnlijk niet zal mislukken. Als je echt iets complexs wilt opzetten, kunnen we dat, maar dit zou je zeker op weg moeten helpen met deze transformaties.

Gegevensstroom voor stap

1. We beginnen met het inlezen van uw dossier. In mijn geval heb ik het geconverteerd naar CSV, maar het tabblad is ook goed.

2. Nu gaan we de namen van de werknemers invoegen in de tabel Werknemers met behulp van een combination lookup/update .Na het invoegen voegen we de employee_id toe aan onze datastroom als id en verwijder de EmployeeName uit de datastroom.

3. Hier gebruiken we gewoon een stap Waarden selecteren om de naam van de id . te wijzigen veld naar werknemer_id

4. Voeg functietitels toe zoals we dat deden met werknemers en voeg de titel-ID toe aan onze datastroom, waarbij ook de JobLevelHistory wordt verwijderd uit de datastroom.

5. Eenvoudig hernoemen van de titel-ID naar title_id (zie stap 3)

6. Voeg kantoren in, verkrijg id's, verwijder OfficeHistory uit de stream.

7. Eenvoudig hernoemen van de office-ID naar office_id (zie stap 3)

8. Kopieer gegevens van de laatste stap naar twee streams met de waarden employee_id,office_id en employee_id,title_id respectievelijk.

9. Gebruik een tabelinvoeging om de join-gegevens in te voegen. Ik heb het geselecteerd om invoegfouten te negeren, omdat er duplicaten kunnen zijn en de PK-beperkingen ervoor zorgen dat sommige rijen mislukken.

Uitvoertabellen




  1. FORCE INDEX in MySQL - waar plaats ik het?

  2. Geldige tijdreeksindelingen voor SQLite-datum-/tijdfuncties

  3. Wat is het C#-equivalent van het geografische SQL-servergegevenstype in .net Framework 4.0?

  4. Een tabel koppelen aan een backend-database in Access 2016