Tạo bảng (Staging
) với rất nhiều cột. Để trống (NULL
) cột cho parent_id
và id cho trẻ em.
Hy vọng rằng các dòng 'ngắn' sẽ đặt giá trị rỗng trong các cột con bị thiếu trong LOAD DATA
.
INSERT .. SELECT ..
để lấy parent
và parent_detail
vào Parents
bàn. Kéo lại ids
từ Parents
vào Staging.parent_id
. Chi tiết về hai SQL cho những điều này có trong http://mysql.rjweb.org /doc.php/staging_table#normalization
Bây giờ, hãy làm điều gì đó tương tự cho từng tập hợp cột "con" có thể có:child1
và child1_detail
(có thể là cặp NULL) và NULL child1_id
hiện tại . Ditto cho child2 *, v.v. Lưu ý rằng khi điền Children
bảng, bạn đã có parent_id
có sẵn.
Đây là cách thực hiện nhiệm vụ trên toàn SQL. Nó chỉ hơi lộn xộn hơn một chút so với viết Perl / PHP / Java / VB / bất kỳ mã nào để thực hiện tác vụ.