PERL aide script pour alimenter SDBG MySQL [Fermé]

Signaler
Messages postés
3
Date d'inscription
dimanche 6 juillet 2008
Statut
Membre
Dernière intervention
10 novembre 2009
-
Bonjour,

Je débute en Perl et je suis en train de lire des doc pour m'initier. Cependant je désespère et je ne sais pas si j'aurai le courrage de terminer.

Ma problématique est simple, j'ai de multiples fichiers que je dois simplement manipuler, mettre en forme pour alimenter ma base de donnée MySQL (Version 5.1 avec Toad v.4.1.0.220)

Si un dieu vivant du perl passe dans le coin je lui en serais reconnaissant !

Voilà un exemple parmi tant d'autre d'un fichier csv:
245362;77;77289;INR69907;Feutre;799;20091102232406;;VEL;799;66;24;
243640;77;66017;INT81553;"Cahier";699;20091102232318;;VEL;699;66;24;
236958;77;08;DRT03286;Lit;299;20091102231945;;VEL;299;66;15;
319771;77;79060;INA38898;Stylo;399;20091102231902;;VEL;399;66;3;
319771;77;79060;BTQ38898;Stylo;399;20091102231902;;VEL;399;66;24;
319250;77;13110;INJ40768;Matelas;599;20091102231736;;VEL;599;66;24;
320343;77;21758;PRP31628;Souris;299;20091102231459;;VEL;299;66;24;
331379;77;27209;INT59377;Trousse;299;20091102231319;;VEL;299;66;15;
314147;77;89301;BTQ12922;Ciseau;0;20091102231248;;VEL;0;66;24;
334467;77;26234;TEL38873;Mouchoir;499;20091102231131;;VEL;499;66;24;
241749;77;37732;TEL90191;Effaceur;699;20091102231104;;VEL;699;66;24;

Le résultat souhaité:
insert into vod_billing values("236958","8","DRT03286","Lit","299","20091102231945","15","DRT");
insert into vod_billing values("241749","37732","TEL90191","Effaceur","699","20091102231104","24","TEL");
insert into vod_billing values("243640","66017","INT81553","Cahier","699","20091102232318","24","INT");
insert into vod_billing values("245362","77289","INR69907","Feutre","799","20091102232406","24","INT");
insert into vod_billing values("314147","89301","BTQ12922","Ciseau","0","20091102231248","24","BTQ");
insert into vod_billing values("319250","13110","INJ40768","Matelas","599","20091102231736","24","INT");
insert into vod_billing values("319771","79060","BTQ38898","Stylo","399","20091102231902","24","BTQ");
insert into vod_billing values("319771","79060","INA38898","Stylo","399","20091102231902","3","INT");
insert into vod_billing values("320343","21758","PRP31628","Souris","299","20091102231459","24","PRP");
insert into vod_billing values("331379","27209","INT59377","Trousse","299","20091102231319","15","INT");
insert into vod_billing values("334467","26234","TEL38873","Mouchoir","499","20091102231131","24","TEL");

En français cela donne ça:
1.concaténer tous les fichiers *.csv* d'un répertoire en un seul et même fichier
2.remplacer tous les caractères " par rien (la double quote)
3.Supprimer toutes les lignes en doublons
4.Trier par la première colonne
5.De supprimer toutes les lignes vides
6.Le caractère ; est le délimiteur de colonne alors supprimer la colonne 2,8,9,10 & 11
7.D'ajouter en dernière colonne les 3 premiers caractères de la colonne 3 (TEL, PRP etc...)
8.Sur cette dernière colonne, remplacer tous les INA, INJ & INR par INT
9.Insérer en début de ligne insert into vod_billing values("
10.D'insérer en fin de ligne ");
11.De remplacer le délimiteur ; par ","
12.Renommer le fichier de sorti en .sql

Le but ultime serait d'alimenter directement ma base MySQL avec ces lignes créées, mais déjà un tel script serait le nirvana.

Je sais c'est un peu abusé mais sans doute simple pour un developpeur !