1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
#!C:\Perl64\bin\
use strict;
use warnings;
use DBI;
use Text::CSV;
use List::Util "first";
#Ouverture du fichier Client en Lecture
my $FicCli = "C:/Users/A454222/Documents/__Dev Perl/Test sort/FluxMailing_FL17_2.csv";
my $Client_Csv = Text::CSV->new ({
binary => 1, # Allow special character. Always set this
auto_diag => 1, # Report irregularities immediately
allow_loose_quotes => 1,
sep_char => ";"
});
open(Cli_Csv, "<", $FicCli) or die $!;
#Ouverture du fichier Agence en Lecture
my $FicAgence = "C:/Users/A454222/Documents/__Dev Perl/Test sort/File to sort/FluxGuichetPriPro_FL17.csv";
my $Agence_Csv = Text::CSV->new ({
binary => 1, # Allow special character. Always set this
allow_loose_quotes => 1,
auto_diag => 1, # Report irregularities immediately
sep_char => ";"
});
open(Age_Csv, "<", $FicAgence) or die $!;
#Ouverture du fichier Agence Trié en Ecriture
my $FicSorted = "C:/Users/A454222/Documents/__Dev Perl/Test sort/File_Sorted.csv";
open(FicSort, ">", $FicSorted) or die $!;
#Ouverture du fichier Result en Ecriture
my $FicResult = "C:/Users/A454222/Documents/__Dev Perl/Test sort/Result_Full.txt";
open(FicRes, ">", $FicResult) or die $!;
##########################################################
################# Debut de la Partie Tri #################
##########################################################
#Creation de la DataBase pour le Tri du fichier Agence
my $dbh = DBI->connect('dbi:CSV:', undef, undef, {
RaiseError => 1,
f_ext => '.csv',
f_dir => "File to sort",
f_dir_search => "File sorted",
csv_sep_char => ";",
csv_tables => { FluxGuichetPriPro_FL17 => { col_names => [qw' Code_DEC Code_Agence Code_DR Nom_Agence Type_Agence Cplt_Intitule_Adresse Rue Lieu_Dit Code_Postal Ville Num_Tel_Signataire Civilite Prenom Nom '] } },
});
#Creation de la requete SQL pour le Tri sur le Champ Code_Agence
my $sth = $dbh->prepare(q{
SELECT * FROM FluxGuichetPriPro_FL17 ORDER BY Code_Agence
});
#Execution de la requête
$sth->execute;
my %Hash;
my $CodeAgenceCli = 0;
my $count = 0;
#Ecriture du Tableau trié dans le fichier File_Sorted.csv
while ( my @row = $sth->fetchrow_array ) {
my $LineSorted = join(';' => @row);
print(FicSort $LineSorted,"\n");
$CodeAgenceCli = $row[1] ;
%Hash = ($CodeAgenceCli => $LineSorted);
#print (FicRes "Borne Deb = ", $Hash{$CodeAgenceCli},"\n");
}
close FicSort;
$sth->finish;
$dbh->disconnect;
while (<Cli_Csv> ) {
next if ($. == 1);
if ($Client_Csv->parse($_)) {
my @ColCliMailing = $Client_Csv->fields();
$CodeAgenceCli = $ColCliMailing[2]; #Recupere le Code_Agence de la Ligne Courante
$count++;
my @colAgence = split(/;/,$Hash{$CodeAgenceCli});
my $NumTel_Prem = substr($colAgence[10],-10,2);
my $NumTel_Sec = substr($colAgence[10],-8,2);
my $NumTel_Ter = substr($colAgence[10],-6,2);
my $NumTel_Tet = substr($colAgence[10],-4,2);
my $NumTel_Quint = substr($colAgence[10],-2,2);
my $NumTelFormate = join (".",$NumTel_Prem,$NumTel_Sec,$NumTel_Ter,$NumTel_Tet,$NumTel_Quint) ;
my $NumTelFormateFull = join (" ","TEL. :",$NumTelFormate);
#print (FicRes CodeBanque;CodeSG3N;CodePostal;FR/ETR;Code Guichet;Numéro de compte;Annexe1;Annexe2;Annexe3;Annexe4;Id adresse (gestion PND);DestLignAdr1;DestLignAdr2;DestLignAdr3;DestLignAdr4;DestLignAdr5;DestLignAdr6;Nom_Agence;Cplt_Intitule_Adresse;Rue;Lieu_Dit;Code_Postal Ville;Num_Tel_Signataire;Var1;Var2;Var3;Var4;Var5;Var6;Var7;Var8;Var9;Var10;)
print (FicRes "30003",";",";",$ColCliMailing[19],";","FR",";",$ColCliMailing[2],";",sprintf("%016u",$count),";"," ",";"," ",";"," ",";"," ",";"," ",";",$ColCliMailing[14],";",$ColCliMailing[15],";",$ColCliMailing[16],";",$ColCliMailing[17],";",$ColCliMailing[18],";",$ColCliMailing[19]," ",$ColCliMailing[20],";",$colAgence[3],";",$colAgence[5],";",$colAgence[6],";",$colAgence[7],";",$colAgence[8]," ",$colAgence[9],";",$NumTelFormateFull,";",$colAgence[1],";",$ColCliMailing[7],";",$ColCliMailing[8],";",";",";",";",";",";",";","\n");
}
} |
Partager