Jika Anda menggunakan Talend versi berlangganan, Anda dapat menggunakan jenis kolom dinamis. Anda dapat menentukan satu kolom untuk input Anda dengan tipe "Dinamis" dan memetakannya ke kolom dengan tipe yang sama di komponen output Anda. Ini akan secara dinamis mendapatkan kolom dari tabel a dan memetakannya ke kolom yang sama di tabel b. Berikut contoh
.
Jika Anda menggunakan Talend Open Studio, segalanya menjadi sedikit lebih rumit karena Talend mengharapkan daftar kolom untuk komponen input dan output yang perlu ditentukan pada waktu desain.
Inilah solusi yang saya kumpulkan untuk mengatasi batasan ini.
Idenya adalah untuk membuat daftar semua kolom tabel a yang ada di tabel b. Kemudian ubah menjadi daftar kolom yang dipisahkan koma, dalam contoh saya id,Theme,name
dan simpan dalam variabel global COLUMN_LIST
. Keluaran kedua dari tMap membuat daftar kolom yang sama, tetapi kali ini menempatkan tanda kutip tunggal di antara kolom (sehingga dapat digunakan sebagai parameter untuk CONCAT
fungsi nanti), lalu tambahkan tanda kutip tunggal ke awal dan akhir, seperti:"'", id,"','",Theme,"','",name,"'"
dan simpan dalam variabel global CONCAT_LIST
.
Pada subjob berikutnya, saya menanyakan table a
menggunakan CONCAT
fungsi, memberikannya daftar kolom yang akan digabungkan CONCAT_LIST
, sehingga mengambil setiap catatan dalam satu kolom seperti 'value1', 'value2',..etc
Lalu akhirnya saya menjalankan INSERT
kueri terhadap table b
, dengan menentukan daftar kolom yang diberikan oleh variabel global COLUMN_LIST
, dan nilai yang akan disisipkan sebagai string tunggal yang dihasilkan dari CONCAT
fungsi (row6.values
).
Solusi ini bersifat umum, jika Anda mengganti nama tabel dengan variabel konteks, Anda dapat menggunakannya untuk menyalin data dari tabel MySQL ke tabel lain.