Optimierung von DB Import

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Optimierung von DB Import

    Hallo Leute,

    ich muss eine csv in eine Tabelle importieren. Beim Import muss ich überprüfen, ob in einer anderen Tabelle das gleiche enthalten ist. Wenn das so ist, wird die Zeile aus dem CSV importiert, ansonsten wird die zeile verworfen. Allerdings ist der Import auch nach 20 Minuten Scriptlaufzeit nicht zu Ende, was sehr unbefriedigend ist. Es handelt sich um rund 300000 Datensätze. Kann mir jemand helfen das zu optimieren? Vielen lieben Dank!

    PHP-Code:
    $handle fopen ($pathToFile,"r");              // Datei zum Lesen öffnen
    while ( ($data fgetcsv ($handle1000";")) !== FALSE ) { // Daten werden aus der Datei
                                                   // in ein Array $data gelesen
            
    $arrNew=array();
            
    $row++;
                
    $n=0;
                foreach(
    $data as $key) {
                
    $arrNew['field'.$n] = $data[$n];
                
    $n++;
                
                
                }

                
    $res $GLOBALS['TYPO3_DB']->exec_SELECTquery('*'
                
    'tt_products','tx_mrpumpconfig_ispump=0 AND hidden=0 AND deleted=0 
                AND title="'
    .$arrNew['field0'].'"','','');
                
                while(
    $test mysql_fetch_assoc($res)){
                
    $query $GLOBALS['TYPO3_DB']->INSERTquery('tt_tempprice'$arrNew);    
                
    $res_update $GLOBALS['TYPO3_DB']->sql(TYPO3_db$query);
                
    $countDB++;

                }
                
                                                        

            
            }


    fclose ($handle); 

  • #2
    Load data infile. Schneller gehts wohl nicht!

    Kommentar


    • #3
      Sowas habe ich auch schon probiert:

      PHP-Code:
       $query "LOAD DATA INFILE 
      '/srv/www/vhosts/bla.de/httpdocs/fileadmin/Preislisten/01012008.csv' 
      INTO TABLE tt_tempprice"
      ;
      $res $GLOBALS['TYPO3_DB']->sql_query($query);
      echo 
      mysql_error(); 
      Ich bekomme lediglich ein
      Code:
      Can't get stat of '/srv/www/vhosts/bla.de/httpdocs/fileadmin/Preislisten/01012008.csv' (Errcode: 13)
      zurück... googeln war irgendwie erfolgslos, drum wollte ich das anders lösen :/

      Kommentar


      • #4
        Ich vermute dass es sich um Rechteprobleme geht

        For security reasons, when reading text files located on the server, the files must either reside in the database directory or be readable by all. Also, to use LOAD DATA INFILE on server files, you must have the FILE privilege

        Kommentar

        Lädt...
        X