Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: CSV 80 M

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    483

    file CSV da 80mega

    ciao a tutti...avevo aperto ieri una discussione simile a questa... ma avevo posto delle domande "inutili" perchè ancora non sapevo ancora niente in riguardo all'argomento.

    cmq....

    ho un file CSV di circa 80 MEGA e devo importarlo in una tabella di un database...
    ho letto ke ci sono diverse strade da poter seguire quali per esempio l'istruzione sql INSERT INTO FILE oppure ho appena scoperto ke c'è una funzione php "fgetcsv"...ke potrebbe fare al caso mio...

    ora vi kiedo...considerando la grande dimensione del mio file e non potendo interevire per eventualmente ridurlo...quale strada è meglio scegliere per importarlo nel db ?

    grazie ciao

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    potresti spezzettare il file in N files da X righe.

    fgetcsv è proprio la funzione che fa al caso tuo, apre un file csv e mette in un array tutti i dati del record. Una volta letti i dati li puoi mettere in un db componendo la query di inserimento.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    483
    ma mi consigli di spezzare il file xke fgetcsv nn ce la fa a copiarmi un file di 80mega? o per alleggerire il lavoro ?? te lo kiedo xke sto provando a scrivere il codice e nn ho ancora provato a inserire l'intero file di 80mega


    cmq grazie

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da ipnotic
    ma mi consigli di spezzare il file xke fgetcsv nn ce la fa a copiarmi un file di 80mega? o per alleggerire il lavoro ?? te lo kiedo xke sto provando a scrivere il codice e nn ho ancora provato a inserire l'intero file di 80mega


    cmq grazie
    dipende da tante cose, dalla potenza di calcolo del tuo pc, se il dbserver è in locale ecc.


    se vuoi puoi provare a usare file() per aprire il file csv, in un array avrai un indice per ogni linea del file, cosi puoi salvare N righe su ogni file.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    483
    chiedo un aiuto sulla scrittura del codice...stavo provando a modificare il seguente codice preso da php.net

    codice:
    <?php
    $row = 1;
    $handle = fopen("test.csv","r");
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
       $num = count($data);
       echo "
    
     $num campi sulla linea $row: 
    </p>\n";
       $row++;
       for ($c=0; $c < $num; $c++) {
           echo $data[$c] . "
    \n";
       }
    }
    fclose($handle);
    ?>
    in modo ke invece di stamparmi a video i valori me li inserisca in un database.. in particolare i nomi delle mi colonne si chiamano dal 1 al 12 e nel file per ogni riga ci sono 12 valori... come posso fare ? sto provando ma non riesco


  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    codice:
    <?php
    $row = 1;
    $handle = fopen("test.csv","r");
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
       $num = count($data);
       echo "
    
     $num campi sulla linea $row: 
    </p>\n";
       $row++;
       $query="INSERT INTO tabella (1,2,3,4,5,6,7,8,9,10,11,12) VALUES ($data[0],$data[1],$data[2],$data[3],$data[4],$data[5],
    $data[6],$data[7],$data[8],$data[9],$data[10],$data[11]);
       echo $query;
       //mysql_query($query);
    }
    fclose($handle);
    ?>
    prima verifica a video che la query sia corretta, poi decommenta il comando mysql_query.

    ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    483
    ho provato come mi hai detto e leggendola la query sembra perfetta... ma nn mi inserisce niente.... xke ? ??


  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    hai decommentato il comando mysql_query?

    io ho dato per scontato che avessi eseguito la connessione al db, l'hai fatto?

    ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    483
    ora funziona... ma mi inserisce solo la prima riga del mio file....come faccio x inserire anke le altre ???

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ma quandpo stampavi le query te le metteva tutte?
    se tutto è dentro il while deve fare TOT cicli quante sono le righe del file.

    ciao

    se sostituisci $query = mysql_query ecc ecc
    con

    mysql_query

    vedrai gli eventuali errori gestiti dal php.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.