Variable multilignes pour une insertion sql - Perl - Programmation
Marsh Posté le 21-06-2005 à 17:16:00
Quelque chose comme cela cela ne marcherai pas par hazard... 
 
use strict; 
 
my $var1 = undef; 
my $var2 = undef; 
my $var3 = undef; 
 
#ouverture du fichier source 
open(FSOURCE,"< $ARGV[0]" ) || die "Problème pour ouvrir $ARGV[0] !"; 
open(FRESULT, "> tuples.sql" ) || die "ouverture du fichier impossible !"; 
 
foreach my $ligne (<FSOURCE> ){ 
    if ($ligne =~ /^>(.*)_(.*_.*)_(.*)_(.*)/){ 
         if(defined($var3)){ 
           print FRESULT "INSERT INTO Table VALUES ('".$var1."','".$var2."','".$var3."');\n"; 
         } 
        $var3 = undef; 
        $var1 = $1.'_'.$2; 
        $var2 = $1; 
#        print  "var1: $var1, var2: $var2\n"; 
    } 
 
 
    if ($ligne =~ /^(\w+)/is){ 
        $var3 .= $1; 
 
#        print "var3:$var3\n"; 
   } 
} 
 
   if(defined($var3)){ 
           print FRESULT "INSERT INTO Table VALUES ('".$var1."','".$var2."','".$var3."');\n"; 
   } 
    
close FSOURCE; 
close FRESULT; 
Marsh Posté le 21-06-2005 à 15:42:02
Bonjour à tous.
J'essaie d'utiliser perl afin de créer un fichier d'insertion de tuples mysql.
Je pars pour cela d'un fichier qui est formaté de la sorte:
Après ouverture de ce fichier, j'arrive par des regex à recupérer les variables présentes sur la ligne commençant par >, par contre se qui suit cette ligne est elle même une variable:
=variable3
Au final, une fois avec recolté ces 3 variables, je veux les ecrire dans un autre fichier tuples.sql qui pourra par la suite être utilisé avec ma base.
voila mon code:
Pour var3 j'utilise les options "traiter la chaine comme une ligne simple" afin de récupérer toute les lignes entre les > , ceci pour asigner le resultat global à var3 mais ça ne marche pas.
Un peu d'aide please
Message édité par suomi le 21-06-2005 à 15:44:56