[php]

Statut
N'est pas ouverte pour d'autres réponses.

hasbrak

Touriste
Bonjour,

J'expose le problème :

J'ai un fichier .mdb qui se met a jour tous les 4h. Ce fichier comporte en fin d'année plus de 400 000 lignes. (.mdb initialisé le 1 janvier) Le fichier se compose d'une seule table. Je dois travailler sur 3 champs, je souhaite tous exporter dans mysql. La base de mysql comprend tout les lignes depuis X années.

Le passage .mdb => mysql, se fait correctement, l'ajout des nouvelle ligne aussi. Mais cela prend du temps beaucoup de temps. Car je lis chaque ligne dans le .mdb puis je compare au mysql si elle est présente je copie pas sinon j'insert.

Est ce que quelqu'un a autre idée ?

PHP:
<?php
set_time_limit(500);
//Connexion à mysql
$connection = mysql_connect("localhost","root","");
if ( ! $connection )
die ("connection impossible");
$sqlbd="telegramme";
mysql_select_db($sqlbd) or die ("pas de connection");
// Chemin physique de ma base Access
$cheminDeMaBase = 'F:\Documents\******\Graph de Compteur DB\200910.mdb';
// Chaîne utilisée pour la connection ODBC sans DSN s'il vous plaît
$connectionString = sprintf("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=%s", $cheminDeMaBase);
// Connexion
$cnx = odbc_connect($connectionString,"","");
// Requête SQL
$resource = odbc_exec($cnx, "SELECT GASub,TeleDate,Value FROM Telegramme");
// Pour chaque enregistrement...
while(odbc_fetch_row($resource))
{
   
   
    $GASub=odbc_result($resource, 'GASub');
    $TeleDate = odbc_result($resource, 'TeleDate');
	$result = mysql_query("
                    SELECT Compteur, Date
                    FROM telegramme
                    WHERE Compteur = '$GASub'
                    and Date = '$TeleDate'
               ");
	 if(!$result)
               {
                    $message = "Une erreur est survenue lors connexion à la base de donnée.";
               }
               else
               {
					if(mysql_num_rows($result) == 0)
                    {
                       $Value= odbc_result($resource, 'Value'); 
                       $insert = mysql_query("INSERT INTO telegramme (Compteur,Date,Valeur) VALUES('$GASub','$TeleDate','$Value')");
					}	 
				}
}
// Et je ferme les connexions
odbc_close($cnx);
mysql_close($connection); 
?>
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut