Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan Pentaho Kettle, bagaimana cara memuat beberapa tabel dari satu tabel sambil menjaga integritas referensial?

Saya mengumpulkan contoh transformasi (klik kanan dan pilih simpan tautan) berdasarkan apa yang Anda berikan. Satu-satunya langkah yang saya rasa agak tidak pasti adalah input tabel terakhir. Saya pada dasarnya menulis data gabungan ke tabel dan membiarkannya gagal jika hubungan tertentu sudah ada.

catatan:

Solusi ini tidak benar-benar memenuhi "Semua pendekatan harus menyertakan beberapa dari validasi dan strategi rollback jika sisipan gagal, atau gagal mempertahankan integritas referensial." kriteria, meskipun mungkin tidak akan gagal. Jika Anda benar-benar ingin menyiapkan sesuatu yang rumit, kami dapat melakukannya, tetapi ini pasti akan membantu Anda melakukan transformasi ini.

Dataflow demi Langkah

1. Kami mulai dengan membaca di file Anda. Dalam kasus saya, saya mengonversinya ke CSV tetapi tab juga baik-baik saja.

2. Sekarang kita akan memasukkan nama karyawan ke dalam tabel Karyawan menggunakan combination lookup/update .Setelah penyisipan, kami menambahkan employee_id ke aliran data kami sebagai id dan hapus EmployeeName dari aliran data.

3. Di sini kita hanya menggunakan langkah Select Values ​​untuk mengganti nama id bidang ke employee_id

4. Masukkan Jabatan seperti yang kami lakukan pada karyawan dan tambahkan id judul ke aliran data kami juga menghapus JobLevelHistory dari aliran data.

5. Ubah nama id judul menjadi title_id (lihat langkah 3)

6. Masukkan kantor, dapatkan id, hapus OfficeHistory dari aliran.

7. Ubah nama id kantor menjadi office_id (lihat langkah 3)

8. Salin Data dari langkah terakhir menjadi dua aliran dengan nilai employee_id,office_id dan employee_id,title_id masing-masing.

9. Gunakan sisipan tabel untuk menyisipkan data gabungan. Saya telah memilihnya untuk mengabaikan kesalahan penyisipan karena mungkin ada duplikat dan batasan PK akan membuat beberapa baris gagal.

Tabel Keluaran




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pohon menu gema dengan fungsi rekursif

  2. Mengumumkan ClusterControl 1.7.2:Pencadangan &Dukungan PostgreSQL yang Ditingkatkan untuk TimescaleDB &MySQL 8.0

  3. EXPLAIN dan COUNT mengembalikan dua nilai yang berbeda

  4. MySQL - Kode Kesalahan 1215, tidak dapat menambahkan batasan kunci asing

  5. Mengapa baris cocok tetapi tidak diubah dengan pernyataan pembaruan mysql?