sql >> Databasteknik >  >> RDS >> Mysql

Hur man gissar schema i Mysqlinput i farten i Talend

Om du använder en prenumerationsversion av Talend kan du använda den dynamiska kolumntypen. Du kan definiera en enskild kolumn för din inmatning av typen "Dynamisk" och mappa den till en kolumn av samma typ i din utdatakomponent. Detta kommer dynamiskt att hämta kolumner från tabell a och mappa dem till samma kolumner i tabell b. Här är ett exempel .
Om du använder Talend Open Studio blir det lite svårare eftersom Talend förväntar sig en lista med kolumner för in- och utdatakomponenterna som måste definieras vid designtillfället.

Här är en lösning som jag satt ihop för att kringgå denna begränsning.

Tanken är att lista alla kolumner i tabell a som finns i tabell b. Konvertera den sedan till en kommaseparerad lista med kolumner, i mitt exempel id,Theme,name och lagra den i en global variabel COLUMN_LIST . En andra utdata från tMap bygger samma lista med kolumner, men den här gången sätts enstaka citattecken mellan kolumner (så att de kan användas som parametrar till CONCAT funktion senare), lägg sedan till enstaka citattecken i början och slutet, som så:"'", id,"','",Theme,"','",name,"'" och lagra den i en global variabel CONCAT_LIST .

På nästa underjobb frågar jag table a med CONCAT funktion, vilket ger den listan över kolumner som ska sammanfogas CONCAT_LIST , på så sätt hämtar varje post i en enda kolumn som så 'value1', 'value2',..etc

Sedan kör jag äntligen en INSERT fråga mot table b , genom att ange listan över kolumner som ges av den globala variabeln COLUMN_LIST , och värdena som ska infogas som en enda sträng som är resultatet av CONCAT funktion (row6.values ).

Den här lösningen är generisk, om du ersätter dina tabellnamn med kontextvariabler kan du använda den för att kopiera data från valfri MySQL-tabell till en annan tabell.




  1. Hur man bäst lagrar användarinformation och användarinloggning och lösenord

  2. NodeJS Postgres-fel getaddriinfo ENOTFOUND

  3. 2 sätt att returnera rader som inte innehåller numeriska värden i Oracle

  4. Felaktiga resultat med Merge Join