insertion en grand nombre
Posté : 07 août 2007, 20:00
Bonjour à tous
Au boulot je suis chargé de regrouper toutes les factures d'appels de portables des commerciaux avec les appels de la boite pour faire un mailing vers les clients.
J'ai donc crée une base de données Mysql et j'insére les données par fichiers CSV
mais je dois ensuite "remodeler" cette premiére table afin que les factures soient lisibles par tous les commerciaux.
J'ai donc "créee" un programme en PHP pour le faire mais quand je transfére les données de la table UNE à la table 2 c'est la catastrophe; les milliers de lignes mettent un temps infini à se tranférer. Vu mon faible niveau en PHP je pense que ce programme n'est pas du tout optimisé (probléme d'accolades, d'instruction, de boucle, etc...)
Comment peut-on faire pour que les données s'insérent rapidement (moins de 10 secondes)
Voici le programme
Au boulot je suis chargé de regrouper toutes les factures d'appels de portables des commerciaux avec les appels de la boite pour faire un mailing vers les clients.
J'ai donc crée une base de données Mysql et j'insére les données par fichiers CSV
mais je dois ensuite "remodeler" cette premiére table afin que les factures soient lisibles par tous les commerciaux.
J'ai donc "créee" un programme en PHP pour le faire mais quand je transfére les données de la table UNE à la table 2 c'est la catastrophe; les milliers de lignes mettent un temps infini à se tranférer. Vu mon faible niveau en PHP je pense que ce programme n'est pas du tout optimisé (probléme d'accolades, d'instruction, de boucle, etc...)
Comment peut-on faire pour que les données s'insérent rapidement (moins de 10 secondes)
Voici le programme
<?php
$connect=mysql_connect("localhost", "root", "") or die ("Echec de la connexion au serveur !");
$select=mysql_select_db("facture");
$sql="SELECT * from $perso";
//echo $sq;
$result=mysql_query($sql);
$i=0;
while ($row=mysql_fetch_array($result)) {
if ($i==0) {
$i++; }
else {
$i--;
}
$abonne=$gsm;
//recueil des 9 derniers chiffres du N°
$abon=substr($gsm,-9);
$appelant=$row[0];
//effacer les espaces
$appelant2 = ereg_replace(' ','',$appelant);
//Effacer le i de international
$appelant3 = ereg_replace('i','',$appelant2);
//recueil des 9 derniers chiffres du N°
$appelant4=substr($appele3,-9);
$appele=$row[1];
$appele2 = ereg_replace(' ','',$appele);
$appele3 = ereg_replace('i','',$appele2);
$appele4=substr($appele3,-9);
$compose=$row[2];
$compose2 = ereg_replace(' ','',$compose);
$compose3 = ereg_replace('i','',$compose2);
$compose4=substr($compose3,-9);
//date fr vers date Mysql
$horo =dateswitch($row[3]);
// si temps est en secondes alors heures minutes secondes
if (ereg ("[A-Za-z]", $row[4])){
$dursec= ereg_replace("s","",$row[4]);
$seconde=convert_sec($dursec);
$dur=ConvertisseurTime($seconde);
}
else
{
$dur=ereg_replace(' ','',$row[4]);
}
$resultap=ereg_replace(' ','',$row[5]);
$appele4=substr($appele3,-9);
if ($resultap != "Efficace")
{
$resultap="Répondeur";
}
else if ($resultap == "Efficace" && $appele4 == $abon )
{
$resultap="Entrant";
}
else
{
$resultap="Sortant";
}
if ($compose4==$abon){
$corresp=$appelant3;
}
else
{
$corresp=$appele3;
}
//insertion des données
$sql = "INSERT INTO $perso2(`type appel`, `abonné`,`correspondant`, `date`, `durée`,`id`)
VALUES ('$resultap','$gsm','$corresp','$horo','$dur',$row[7]) ";
//mysql_query ($sql0) or die ('Erreur SQL !'.$sql0.'<br />'.mysql_error());
$res = @mysql_query($sql) ;
//echo $sql;
}
?>