Jeśli korzystasz z subskrypcji Talend, możesz użyć dynamicznego typu kolumny. Możesz zdefiniować pojedynczą kolumnę dla danych wejściowych typu „Dynamiczny” i odwzorować ją na kolumnę tego samego typu w komponencie wyjściowym. Spowoduje to dynamiczne pobranie kolumn z tabeli a i zamapowanie ich na te same kolumny w tabeli b. Oto przykład
.
Jeśli używasz Talend Open Studio, sprawy stają się nieco trudniejsze, ponieważ Talend oczekuje listy kolumn dla komponentów wejściowych i wyjściowych, które muszą być zdefiniowane w czasie projektowania.
Oto rozwiązanie, które opracowałem, aby obejść to ograniczenie.
Chodzi o to, aby wymienić wszystkie kolumny tabeli a, które występują w tabeli b. Następnie przekonwertuj go na listę kolumn oddzielonych przecinkami, w moim przykładzie id,Theme,name i przechowuj go w zmiennej globalnej COLUMN_LIST . Drugie wyjście tMap tworzy tę samą listę kolumn, ale tym razem umieszczając pojedyncze cudzysłowy między kolumnami (tak, aby mogły być użyte jako parametry do CONCAT funkcji później), a następnie dodaj pojedyncze cudzysłowy na początku i na końcu, na przykład:"'", id,"','",Theme,"','",name,"'" i zapisz go w zmiennej globalnej CONCAT_LIST .
W następnym podzadaniu wysyłam zapytanie do table a za pomocą CONCAT funkcja, podając listę kolumn do połączenia CONCAT_LIST , pobierając w ten sposób każdy rekord w pojedynczej kolumnie, np. 'value1', 'value2',..etc
Następnie w końcu wykonuję INSERT zapytanie do table b , określając listę kolumn podaną przez zmienną globalną COLUMN_LIST i wartości, które mają być wstawione jako pojedynczy ciąg, wynikający z CONCAT funkcja (row6.values ).
To rozwiązanie jest ogólne, jeśli zastąpisz nazwy tabel zmiennymi kontekstowymi, możesz go użyć do skopiowania danych z dowolnej tabeli MySQL do innej tabeli.
