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
| #!/usr/bin/perl
use strict;
use warnings;
# je ne sais pas d'où viennent toutes les variables ci-dessous, non déclarées et non initialisées
# j'ai ajouté leur déclaration pour tester la compilation mais ça ne fonctionnera pas pour
# autant tant qu'elles ne sont pas initialisées
my ($TempSql, $FicSqlTmp, $Instance, $SqmCmd, $Host, $FicSqlDump);
my $modele_SQL = <<"SQL1";
use master;
BACKUP DATABASE LABASE TO DISK = N'$TempSql/${Instance}_LABASE.dmp'
WITH NOFORMAT, INIT, NAME = N'dump-Complet LABASE',
SKIP, NOREWIND, NOUNLOAD, STATS = 10 ;
SQL1
open my $FIC, "<", "$TempSql/$FicSqlTmp" or die "Ouverture impossible du fichier $FicSqlTmp: $!";
while (my $Ligne = <$FIC> )
{
next unless $Ligne =~ /XX=/; # une expression régulière aussi simple, autant la coder en dur, c'est plus clair et souvent plus rapide (elle n'est compilée qu'une fois)
$Ligne =~ s/\s//g; # \s est une classe de caractères qui reconnaît les espaces et les tabulations
my $UneBase = (split /\XX=/, $Ligne)[1];
print ">${UneBase}<\n";
my $Dump_Base_SQL = $modele_SQL;
$Dump_Base_SQL =~ s/LABASE/$UneBase/g;
print "$Dump_Base_SQL\n";
my $CmdDump = system("$SqmCmd -S$Host\\$Instance -Q \"$Dump_Base_SQL\" -o \"$TempSql/${UneBase}_$FicSqlDump\"") ;
}
close ($FIC); |
Partager