Ciao a tutti,

Sperando di non aver postato nella sezione errata scrivo perchè non riesco a risolvere un problema che mi stà facendo impazzire.

Ho la necessità di caricare in un database Mysql svariati milioni di record: questi record sono suddivisi fra circa 100 file ognuno dei quali ne contiene in un hnumero variabile fra poche migliaia a qualche milione.

Per effettuare tale operazione ho deciso di ricorrere a un piccolo programmino scritto in PHP.

I record all'interno di questi file sono in formato CSV, per cui le operazioni che devo svolgere sono semplici: leggere i record uno ad uno, bonificarne alcuni campi e costruire un'istruzione tipo "insert into..." da passare alla funzione mysql_query() per l'inserimento all'interno del database.

Lo script sembra funzionare, infatti per ogni file riesce a caricare circa 17.000 record dopodichè l'elaborazione del file si interrompe con un errore del tipo "MySQL server has gone away".

Il risultato quindi è che mi perdo ni fase di caricamento circa 2 milioni di record.

Avete idea del perchè esce un errore del genere? Per completezza vi riporto il codice del programma:
codice:
<pre>
<?php
set_time_limit(14400);

$aree = array ("AA","AC","AB","AD","AE","AH","AJ","AK","AL","AM","AN","EQ","AP","AO","FA","AQ",
               "ER","AR","AV","AW","AS","AT","AZ","BA","BB","BC","BG","BE","BD","BJ","BF","BH",
               "BK","BN","BL","BM","EP","BV","BZ","BP","BR","BS","AF","BQ","BT","BW","AG","CA",
               "BO","CC","CB","CD","ES","CZ","CG","CE","CF","ET","CJ","CL","CM","CK","CH","CN",
               "CO","CP","DB","CV","CQ","CW","CS","CR","CT","DA","DE","DF","FB","EZ","EW","DG",
               "DJ","DK","DM","DH","DN","DO","DC","EV","DD","DS","DT","DV","EF","EG","DZ","EH",
               "EA","EJ","DR","DQ","DP","DW","ED","EB","EC","EE","EK","EL","EO","EM","DL","EN");
        
for( $i=0 ; $i<count($aree) ; $i++)
{
    if( file_exists( "D:/FILE_BCE_$aree[$i]_2010.TXT" ) )
    {
        $con = mysql_connect( "localhost" , "root" , "");
        $db = mysql_select_db( "test" , $con );            
        $file = fopen("D:/FILE_BCE_$aree[$i]_2010.TXT","r");
        while(!feof($file))
        {
            $rec = fgetcsv( $file , 100000 , ";" );
            $sql= "insert into bce values('','$aree[$i]',";
            for( $ii=0 ; $ii<19 ; $ii++ )
            {
                $rec[$ii] = str_ireplace( "'" , "" , $rec[$ii] );
                $rec[$ii] = str_ireplace( '"' , '' , $rec[$ii] );
                $sql = $sql . "'" . $rec[$ii] . "',";
            }
            $sql = $sql . "'" . $rec[19] . "');";
            if( !mysql_query($sql) )
                die( mysql_error() );
        }
        fclose($file);
        mysql_close( $con );
    }
}
?>
</pre>