Salut,
Est-ce qu'il ne serait pas plus simple de modifier le script de départ plutôt que de créer un nouveau script pour corriger la situation posant problème?
Si ta table comporte 20 colonnes, alors construit un ordre INSERT sous forme de chaine de caractère du genre :
"INSERT INTO TABLE VALUES (,,,,,,,,,,,,,,)"
en mettant en premier les valeurs qui sont renseignées puis tu complètes jusqu'au nombre max de colonnes par des NULL puis tu exécutes cet ordre SQL dynamique.
Par exemple j'imagine un fichier de données en entrée avec :
a b c d
a b c
a b c d e f g h
alors je fais une boucle pour récupérer chaque donnée de chaque ligne : soit a puis b puis c puis d pour la ligne 1.
Ensuite, comme je sais qu'il y a 20 colonnes par exemple dans ma table, je complète ma chaine de caractères avec 16 fois la valeur NULL dans cet exemple : ma variable V_CHAINE vaut "INSERT INTO TABLE VALUES('a', 'b', 'c', 'd', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)" et je fais un EXECUTE IMMEDIATE V_CHAINE;
Et je continue comme ça en traitant chaque ligne.
Ce sera je pense beaucoup plus simple que de partir de la table dont tu parles.
En tout cas je ne vois pas comment faire avec une commande SQL simple; tu seras obligé de faire du PL/SQL.
Partager