Bonjour à Tous, alors voici mon problème.
Je dois réaliser un script en SQL qui me permette de mettre à jour ou d'insérer des nouvelles lignes dans plusieurs tables d'une base de données à partir d'un fichier *.csv sachant que ces insertions sont liés. Je m'explique:
3 tables concernées par la MAJ ou l'insertion:
Table1_camion:
id
numero_interne
nom_camion
site_id
type_id
...
Table2_site:
id
nom_site
...
Table3_type:
id
type_camion
...
les liens entre les tables sont donc:
Table1_camion.site_id=Table2_site.id et Table1_camion.type_id=Table3_type.id
Donc dans le cas d'un update (le camion existe déjà, repéré par son numéro interne) dans la table1 je dois faire une mise a jour des trois tables sachant que l'update doit toucher la table 1 en premier et ainsi de suite. Ce cas est le plus simple je dirai car les liens entre les trois tables existent déjà.
Dans le cas d'un insert il suffit de prendre le max id de la première table (dernière création en date donc) et de le faire correspondre à la table suivante etc...
Mon problème en fait est que je dois faire tous ça avec des données provenant d'un fichier *.csv et donc que je dois faire une mise à jour conditionnelle, c'est à dire si numéro interne existe déjà --> mise à jour sinon insertion nouvelles données. Mais avec l'instruction que je pensais utiliser, le MERGE, je ne vois pas comment je peux dans le cas de la mise à jour toucher les trois tables et dans le cas de l'insert faire des inserts successifs...
Voilà j'espère avoir été assez clair. On utilise une base Oracle 9i ou 10 et je pensais me servir de SQL*Loader pour faire l'import depuis le fichier *.csv...
Merci à tous.
Partager