Bonjour,
Je teste avec une copine le traitement de fichiers CSV.
Nous traitons des fichiers CSV avant de les importer dans une base de données MySql.
Jusqu'à présent nous avons réalisé nos traitements en Php et ça marche bien mais d'une part c'est très lent, et d'autre part nous aimerions expérimenter un autre langage peut-être plus indiqué pour ce genre de traitement.
Pour d'autres projets nous avons fait un générateur de sitemap ainsi qu'un générateur de coordonnées GPS à partir d'une base de données d'adresses (géolocalisation avec API Google Maps) en shell en utilisant awk et sed... Et là c'est vraiment très rapide !
Donc pour nos traitement de fichiers CSV nous sommes en train d'écrire un script shell avec awk et sed. On y arrive bien mais on lit un peu partout que Perl conviendrait mieux pour ce que l'on veut faire.
Mais pour démarrer nous voudrions avoir un exemple concret de code avant de nous lancer complétement dans l'étude de ce langage. Cet exemple pourrait "amorcer" l'écriture d'un script par nos soins beaucoup plus complet et répondant à nos besoins.
Nous pourrions ensuite étudier ce langage à partir de cet exemple concret. Nous pensons que cela sera aussi très utile pour ceux qui, comme nous, abordent ce langage et fréquentent ce forum.
Nous allons donc vous montrer quelques lignes d'un de nos fichiers CSV (Les noms et coordonnées ont été modifiés et ne correspondent à aucune société réelle) et vous expliquer pour chaque ligne le traitement que nous avons appliqué en Php et que nous voudrions reproduire en Perl.
Ne connaissant pas encore la syntaxe nous aimerions assez ensuite que l'un d'entre vous nous propose un code Perl commenté pour réaliser ces traitements.
- Voici donc l'extrait d'un de nos fichiers CSV qui comprend en réalité environ 30 000 lignes (Ligne1, Ligne 2, etc ne font pas partie du fichier CSV).
Ligne 1 NOM;Adresse;CP;Ville;Tel;Fax;Mobile;email;site;
Ligne 2 Tarn Logement Esh;6 r Mar Foch;85000;Roche sur Yon (La);0251852310;0251861314;;;http://www.tarn-logement.fr;
Ligne 3 Crédit Immobilier de Groland;av Jean-Claude Dupau;07250;Pouzin (Le);0475819194;0475618172;;;http://www.gie-ads.fr;
Ligne 4 MPG Constructions;209 r Pavotière;01700;MIRIBEL;0478512149;;;;;
Ligne 5 Gribaldi-Sanroni (SCP);zi Migliacciaro;20243;PRUNELLI DI FIUMORBO;0495545310;0495462199;;;;
Ligne 6 Côte d'Opale Méditérannée;200 bd Félix Martin;83700;Saint Raphaël;0494957372;0494956417;0609389518;ballera.francis@wanadoo.fr;;
Ligne 7 Groupe Dgron;81 bd Lazare Carnot BP18035;31080;TOULOUSE CEDEX 6;0552301620;0552103625;;;;
Ligne 8 F.P.I Promotion;Service commercial 123Bis av Palavas CS 10006;34078;MONTPELLIER CEDEX;0810673177;;;;http://www.fpi-promotion.fr;
- Voici quelques exemple d'opérations que nous devons réaliser sur ce fichier
Ligne 1 --> Cette ligne devra être supprimée
Ligne 2 --> Dans le champ adresse remplacer "r" par "rue" et "Mar" par "Maréchal"
Ligne 2 --> Dans le champ ville remplacer "Roche sur Yon (La)" par "La Roche sur Yon"
Ligne 3 --> Dans le champ adresse remplacer "av" par "Avenue"
Ligne 3 --> Dans le champ ville remplacer "Pouzin (Le)" par "Le Pouzin"
Ligne 4 --> Dans le champ adresse remplacer "r" par "rue"
Ligne 5 --> Dans le champ NOM remplacer "(SCP)" par "(S.C.P)"
Ligne 6 --> Dans le champ adresse remplacer "bd" par "boulevard"
Ligne 6 --> Dans le champ ville remplacer "Saint Raphaël" par "St Raphaël"
Ligne 7 --> Dans le champ adresse remplacer "bd" par "boulevard"
Ligne 7 --> Dans le champ ville remplacer "TOULOUSE CEDEX 6" par "TOULOUSE"
Ligne 8 --> Dans le champ adresse remplacer "Service commercial 123Bis av Palavas CS 10006" par "123Bis av Palavas CS 10006"
Ligne 8 --> Dans le champ ville remplacer "MONTPELLIER CEDEX" par "MONTPELLIER"
Perl est-il adapté à ce que nous voulons faire ?
Si oui, quelqu'un pourrait-il nous fournir un exemple du code qu'il faudrait écrire pour traiter les 8 lignes du fichier CSV avec les opérations demandées afin que nous nous puissions ensuite continuer à explorer ce langage ?
Merci d'avance
Partager