# Amelioration script Perl

**URL:** <https://www.debian-fr.org/t/amelioration-script-perl/60694>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 7:42 UTC](https://www.debian-fr.org/t/amelioration-script-perl/60694 "2016-02-21T19:42:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![igorb](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/i/a9adbd/32.png) [@igorb](https://www.debian-fr.org/u/igorb)\
**Post date:** [Février 21, 2016, 7:42 UTC](https://www.debian-fr.org/t/amelioration-script-perl/60694/1 "2016-02-21T19:42:31Z")

</div>

Bonjour à tous,

J’ai lu beaucoup de bien, concernant Perl, je me suis donc tourné vers lui pour réaliser un script qui doit simplement extraire des infos d’une base de données pour en alimenter une autre avec ces mêmes infos.  
En cherchant sur le net, j’ai trouvé à peu près comment faire, c’est à dire que le script, bien que non fini pour le moment, fonctionne.

Par contre, je suis à peu près sûr qu’il n’est pas vraiment correct, qu’il peut être plus simple, plus léger…

[code]#!/usr/bin/perl  
use warnings;  
use strict;  
use DBI;

# Parametres de connection a la DB ISPCONFIG

my $bd = ‘**_’;  
my $serveur = '’;  
my $identifiant = '’;  
my $motdepasse = '_**\*’;

# Parametres de connection a la DB MX

my $bd2 = ‘**_’;  
my $serveur2 = '_ **** ’;  
my $identifiant2 = '**\*\*\*’;  
my $motdepasse2 = ‘\*\*\*\*\*\*\*\*’;

# Connection a la DB ISPCONFIG

print “Connexion a la base de donnees $bd\n”;  
my $connect\_ispconfig = DBI-\>connect( “DBI:mysql:database=$bd;host=$serveur;”,  
$identifiant, $motdepasse, {  
RaiseError =\> 1, }  
) or die “Connection impossible a la base de donnees $bd !\n $! \n $@\n$DBI::errstr”;

# Connection a la DB MX

print “Connexion a la base de donnees $bd2\n”;  
my $connect\_mx = DBI-\>connect( “DBI:mysql:database=$bd2;host=$serveur2;”,  
$identifiant2, $motdepasse2, {  
RaiseError =\> 1, }  
) or die “Connection impossible a la base de donnees $bd2 !\n $! \n $@\n$DBI::errstr”;

# Requete pour dupliquer les users

my $query1 = "SELECT `id`,`email` FROM `spamfilter_users`";  
my $query2 = "DELETE FROM `users`";  
my $query3 = “INSERT INTO `users`(`id`, `priority`, `policy_id`, `email`, `fullname`, `local`) VALUES (?,?,?,?,?,?)”;  
my $statement = $connect\_ispconfig-\>prepare($query1);  
my $statement2 = $connect\_mx-\>prepare($query2);  
my $statement3 = $connect\_mx-\>prepare($query3);  
$statement-\>execute;  
$statement2-\>execute;  
while (my @row = $statement-\>fetchrow\_array) {  
$statement3-\>execute($row[0], 7, 1, $row[1], $row[1],‘Y’);

# print “$row[0] $row[1]\n”;

}[/code]

La dernière partie : Requête, me semble vraiment lourde.  
Est-ce quelqu’un peut m’aider à alléger ça ?

Merci d’avance et joyeuses fêtes !

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 7:42 UTC](https://www.debian-fr.org/t/amelioration-script-perl/60694/2 "2016-02-21T19:42:32Z")

</div>

Tu dois pouvoir utiliser [mono]execute\_for\_fetch[/mono] pour exécuter ton [mono]statement3[/mono] directement pour chaque résultat de l’exécution de ton [mono]statement[/mono].

Ça t’évite une boucle et tu dois gagner une ligne ou 2 en terme de performance je sais pas ça dépend de l’implémentation de [mono]execute\_for\_fetch[/mono].

---

<div class="post-metadata">

**Author:** ![igorb](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/i/a9adbd/32.png) [@igorb](https://www.debian-fr.org/u/igorb)\
**Post date:** [Février 21, 2016, 7:42 UTC](https://www.debian-fr.org/t/amelioration-script-perl/60694/3 "2016-02-21T19:42:47Z")

</div>

Ok merci je vais creuser de ce côté.
