sql >> Databáze >  >> RDS >> Mysql

Jak uhodnout schéma v Mysqlinput za chodu v Talendu

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.




  1. MySQL a Java - Získejte ID poslední vložené hodnoty (JDBC)

  2. Správa vysoké dostupnosti PostgreSQL – Část I:Automatické převzetí služeb při selhání PostgreSQL

  3. Vaše heslo nesplňuje aktuální požadavky zásad

  4. Jak zkombinovat dva dotazy SQL s různými klauzulemi ORDER BY