Créer une table (Staging
) avec beaucoup de colonnes. Avoir vide (NULL
) colonnes pour parent_id
et des identifiants pour les enfants.
Espérons que les lignes "courtes" mettront des valeurs nulles dans les colonnes enfants manquantes pendant le LOAD DATA
.
INSERT .. SELECT ..
pour obtenir le parent
et parent_detail
dans les Parents
table. Récupérez les ids
de Parents
dans Staging.parent_id
. Les détails sur les deux SQL pour ceux-ci sont dans http://mysql.rjweb.org /doc.php/staging_table#normalization
Faites maintenant quelque chose de similaire pour chaque ensemble de colonnes "enfant" possible :child1
et child1_detail
(éventuellement paire NULL) et le child1_id
actuellement NULL . Idem pour child2*, etc. Notez que lorsque vous remplissez le champ Children
table, vous avez déjà parent_id
disponible.
Il s'agit d'une manière entièrement SQL d'effectuer la tâche. C'est seulement un peu moins salissant que d'écrire du code Perl/PHP/Java/VB/n'importe quoi pour faire la tâche.