Bonjour,
Je m'excuse d'avance si ce sujet a déjà été traité, mais je n'ai pas trouvé de réponse exacte à mon problème.
Je souhaite charger un fichier à plat au format CSV dans une base Oracle 9i.
J'ai du mal a écrire mon fichier de contrôle pour mener à bien cette opération car j'ai une contrainte qui est la suivante :
Mon fichier à plat contient 28 colonnes, dont l'ordre ne peut pas être changé.
Les 20 premières colonnes doivent aller dans une table, pour cela pas de problème.
Par contre, les 2 premières colonnes et les 8 dernières doivent aller dans une 2ème table.
Je voudrais faire cette opération avec un seul fichier d'import (CSV) et un seul fichier de contrôle (CTL) pour SQL*LOADER.
J'ai essayé avec 2 clauses "into" dans le fichier de contrôle mais sans succès car je ne sais pas comment "aiguiller/dupliquer" correctement les 2 premières colonnes + les 8 dernières dans la 2ème table... car il n'existe pas de "mapping" avec SQL*LOADER (enfin à ma connaissance).
J'ai réussi en trichant : Dupliquer les 2 premières colonnes en question avant les 8 dernières dans le fichier, mais ce n'est pas bon parce que dans les faits je ne pourrai pas changer la structure du fichier d'import, j'ai fait cela juste pour tester...
Autre contrainte de taille, je ne peux pas utiliser l'option POSITION, car mes champs peuvent être amenés à changer dans le temps donc pas question d'utiliser le format fixe, j'ai un séparateur point-virgule dans mon fichier à plat et je dois m'en contenter.
Toute aide sur la question est la bienvenue.
Je vous en remercie d 'avance.
Partager