sql >> Database teknologi >  >> RDS >> Mysql

Ved hjælp af Pentaho Kettle, hvordan indlæser jeg flere borde fra en enkelt tabel, mens jeg bevarer referenceintegriteten?

Jeg har sammensat et eksempel på transformation(højreklik og vælg gem link) baseret på det du har givet. Det eneste trin, jeg føler mig lidt usikker på, er de sidste tabelinput. Jeg skriver dybest set sammenføjningsdataene til tabellen og lader dem mislykkes, hvis der allerede eksisterer en specifik relation.

bemærk:

Denne løsning opfylder ikke rigtigt "Alle tilgange bør inkludere nogle fra validering og en rollback-strategi, hvis en indsættelse mislykkes eller ikke opretholder referentiel integritet." kriterier, selvom det nok ikke vil fejle. Hvis du virkelig ønsker at opsætte noget komplekst, kan vi det, men dette burde helt sikkert få dig i gang med disse transformationer.

Dataflow efter trin

1. Vi starter med at læse din fil ind. I mit tilfælde konverterede jeg det til CSV, men fanen er også fint.

2. Nu skal vi indsætte medarbejdernavnene i medarbejdertabellen ved hjælp af en combination lookup/update .Efter indsættelsen tilføjer vi medarbejder_id'et til vores datastrøm som id og fjern EmployeeName fra datastrømmen.

3. Her bruger vi bare et Vælg værdier-trin til at omdøbe id felt til medarbejder_id

4. Indsæt jobtitler ligesom vi gjorde medarbejdere, og tilføj titel-id'et til vores datastrøm og sletter også JobLevelHistory fra datastrømmen.

5. Simpelt omdøb af titel-id'et til title_id (se trin 3)

6. Indsæt kontorer, få id'er, fjern OfficeHistory fra strømmen.

7. Simpelt omdøb af office-id'et til office_id (se trin 3)

8. Kopier data fra sidste trin til to strømme med værdierne employee_id,office_id og employee_id,title_id hhv.

9. Brug en tabelindsættelse til at indsætte joindataene. Jeg har valgt at ignorere indsættelsesfejl, da der kan være dubletter, og PK-begrænsningerne vil få nogle rækker til at mislykkes.

Outputtabeller




  1. DSN-filer og IRI-software

  2. Udfyldning af en PL/SQL-tabel fra en blok i Oracle D2k Forms

  3. Henter rækker i en MySQL-databasetabel ved hjælp af MySQL C API og C++

  4. MySql - bestil efter strengværdi først