Traitement d'un CSV avant insertion SQL

Résolu
Bonjour à tous,
je souhaite traiter un fichier CSV que je souhaite inserer dans un base de données mysql.
il se présente sous la forme suivante:

Fichier CSV
"Auteur";"Filmographie" \retour ligne ... ainsi de suite...

Jusque là tout va bien, mais le problème que je rencontre
est que dans un même champs il y a plusieurs infos et en nombre variable...
Explication:

Structure du champs Filmographie:

[Titre du film]||[annee de tournage||[Type]
séparateur dans le champs: || (en nombre fixe)
Séparateur occurrence d'un item: ## (en nombre variable)

Exemple:
"Martin Scorsese";"Mad Max||1979||Action||Raging Bull||1980##1981||Drame||Cannonball||1975||Action##Comédie##Drame" \retour ligne

J'aurais aimé avoir ça sous une forme plus simple à traiter pour moi, du genre:

"Martin Scorsese";"Mad Max";"1979";"Action" \retour ligne
"Martin Scorsese";"Raging Bull";"1980-1981";"Drame" \retour ligne
"Martin Scorsese";"Cannonball";"1975";"Action-Comédie-Drame" \retour ligne

Peut-être avez-vous d'autres façons de faire à m'indiquer?
Merci d'avance de vos propositions.

2 réponses

  1. plusieurs infos dans un "champs" c'est plus vraiment du csv ça.
    tu peux toujours passer par du replace ... replace(laligne, '||', '";"')
    1. oui je sais c'est pas trop pratique :-/
      probleme résolu grace à zipe31 du forum linux
      grace à la commande "sed.
      voici le code:

      s/||[^|]*//1  
      s/\(## [^|]*|\)|[^|]*|/\1/g  
      s/||/";"/g   
      s/ ## /"\n"/g    
      s/\([^;]*;[^;]*;\)\([^\n]*\n\)\(.*\)/\1\2\1\3/   
      P   
      D