Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sử dụng Pentaho Kettle, làm cách nào để tải nhiều bảng từ một bảng trong khi vẫn giữ được tính toàn vẹn của tham chiếu?

Tôi đã tổng hợp một chuyển đổi mẫu (nhấp chuột phải và chọn lưu liên kết) dựa trên những gì bạn đã cung cấp. Bước duy nhất tôi cảm thấy hơi không chắc chắn là đầu vào bảng cuối cùng. Về cơ bản, tôi đang ghi dữ liệu kết hợp vào bảng và để nó không thành công nếu một mối quan hệ cụ thể đã tồn tại.

lưu ý:

Giải pháp này không thực sự đáp ứng được quy định "Tất cả các phương pháp nên bao gồm một số từ xác thực và chiến lược khôi phục nếu chèn không thành công hoặc không duy trì tính toàn vẹn tham chiếu." tiêu chí, mặc dù nó có thể sẽ không thất bại. Nếu bạn thực sự muốn thiết lập một thứ gì đó phức tạp, chúng tôi có thể làm được nhưng điều này chắc chắn sẽ giúp bạn thực hiện được những chuyển đổi này.

Luồng dữ liệu theo từng bước

1. Chúng tôi bắt đầu với việc đọc trong tệp của bạn. Trong trường hợp của tôi, tôi đã chuyển đổi nó thành CSV nhưng tab cũng ổn.

2. Bây giờ chúng ta sẽ chèn tên nhân viên vào bảng Nhân viên bằng cách sử dụng combination lookup/update .Sau khi chèn, chúng tôi nối thêm worker_id vào dòng dữ liệu của chúng tôi dưới dạng id và xóa EmployeeName từ luồng dữ liệu.

3. Ở đây chúng tôi chỉ sử dụng bước Chọn giá trị để đổi tên id trường tới worker_id

4. Chèn Chức danh Công việc giống như chúng tôi đã làm với nhân viên và thêm id chức danh vào dòng dữ liệu của chúng tôi cũng xóa JobLevelHistory từ dòng dữ liệu.

5. Đổi tên đơn giản của id tiêu đề thành title_id (xem bước 3)

6. Chèn các văn phòng, lấy id, xóa OfficeHistory khỏi luồng.

7. Đổi tên đơn giản của id văn phòng thành office_id (xem bước 3)

8. Sao chép Dữ liệu từ bước cuối cùng thành hai luồng với các giá trị employee_id,office_idemployee_id,title_id tương ứng.

9. Sử dụng bảng chèn để chèn dữ liệu nối. Tôi đã chọn nó để bỏ qua lỗi chèn vì có thể có các bản sao và các ràng buộc PK sẽ khiến một số hàng bị lỗi.

Bảng đầu ra




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Loại cột MySQL TIMESTAMP hoàn toàn bao gồm NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

  2. Kết nối mã nguồn PHP và gửi biểu mẫu đến Cơ sở dữ liệu MySQL

  3. Cách xử lý ngày 0000-00-00 trong jdbc truy vấn MySQL

  4. tải xuống các giá trị của bảng sql để sử dụng lại ngoại tuyến

  5. Chọn n hàng ngẫu nhiên cho mỗi nhóm được chỉ định