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

Sådan gættes skema i Mysqlinput på farten i Talend

Hvis du bruger en abonnementsversion af Talend, kan du bruge den dynamiske kolonnetype. Du kan definere en enkelt kolonne for dit input af typen "Dynamisk" og tilknytte den til en kolonne af samme type i din output-komponent. Dette vil dynamisk hente kolonner fra tabel a og knytte dem til de samme kolonner i tabel b. Her er et eksempel .
Hvis du bruger Talend Open Studio, bliver tingene lidt vanskeligere, da Talend forventer en liste over kolonner for input- og outputkomponenterne, der skal defineres på designtidspunktet.

Her er en løsning, jeg har sammensat for at omgå denne begrænsning.

Ideen er at liste alle tabel a's kolonner, der er til stede i tabel b. Konverter det derefter til en kommasepareret liste over kolonner, i mit eksempel id,Theme,name og gem den i en global variabel COLUMN_LIST . Et andet output fra tMap bygger den samme liste af kolonner, men denne gang sætter enkelte anførselstegn mellem kolonner (så de kan bruges som parametre til CONCAT funktion senere), og tilføj derefter enkelte anførselstegn til begyndelsen og slutningen, som sådan:"'", id,"','",Theme,"','",name,"'" og gem den i en global variabel CONCAT_LIST .

På det næste underjob spørger jeg table a ved hjælp af CONCAT funktion, hvilket giver den listen over kolonner, der skal sammenkædes CONCAT_LIST , og dermed henter hver post i en enkelt kolonne som f.eks. 'value1', 'value2',..etc

Så udfører jeg endelig en INSERT forespørgsel mod table b , ved at angive listen over kolonner givet af den globale variabel COLUMN_LIST , og de værdier, der skal indsættes som en enkelt streng, der er et resultat af CONCAT funktion (row6.values ).

Denne løsning er generisk, hvis du erstatter dine tabelnavne med kontekstvariabler, kan du bruge den til at kopiere data fra enhver MySQL-tabel til en anden tabel.




  1. INDSÆT og OPDATERE en post ved hjælp af markører i oracle

  2. Begrænsning for at forhindre overtrædelse af FK-begrænsning i en tredje tabel

  3. COUNT CASE og WHEN-sætning i MySQL

  4. Sådan får du måneden fra en dato i T-SQL