Pokud používáte předplatitelskou verzi Talendu, můžete použít dynamický typ sloupce. Můžete definovat jeden sloupec pro váš vstup typu "Dynamický" a namapovat jej na sloupec stejného typu ve výstupní komponentě. To dynamicky získá sloupce z tabulky a a namapuje je na stejné sloupce v tabulce b. Zde je příklad
.
Pokud používáte Talend Open Studio, věci jsou trochu složitější, protože Talend očekává seznam sloupců pro vstupní a výstupní komponenty, které je třeba definovat v době návrhu.
Zde je řešení, které jsem dal dohromady, abych toto omezení obešel.
Cílem je vypsat všechny sloupce tabulky a, které jsou přítomny v tabulce b. Poté jej převeďte na čárkami oddělený seznam sloupců, v mém příkladu id,Theme,name
a uložte jej do globální proměnné COLUMN_LIST
. Druhý výstup tMap vytváří stejný seznam sloupců, ale tentokrát mezi sloupce vkládá jednoduché uvozovky (takže je lze použít jako parametry pro CONCAT
funkce později), pak přidejte jednoduché uvozovky na začátek a konec, například takto:"'", id,"','",Theme,"','",name,"'"
a uložte jej do globální proměnné CONCAT_LIST
.
V další dílčí úloze dotazuji table a
pomocí CONCAT
funkcí, která jí poskytne seznam sloupců, které mají být zřetězeny CONCAT_LIST
, čímž se načte každý záznam v jednom sloupci, jako je 'value1', 'value2',..etc
Nakonec provedu INSERT
dotaz na table b
, zadáním seznamu sloupců daného globální proměnnou COLUMN_LIST
a hodnoty, které mají být vloženy jako jeden řetězec vyplývající z CONCAT
funkce (row6.values
).
Toto řešení je obecné, pokud nahradíte názvy tabulek kontextovými proměnnými, můžete je použít ke kopírování dat z libovolné tabulky MySQL do jiné tabulky.