Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69

    aiuto per dividere una query troppo grande

    Salve a tutti. Ho bisogno di un aiutino per risolvere un problema.
    Partendo da un file csv molto grande, devo fare l'import di tutti i prodotti in un db MySql appositamente creato e funzionante. Ho creato una text area, nel quale incollo il csv, collegata ad uno scrip che pulisce le varie righe e immette i valori nel db. Funziona tutto quando il csv contiene circa 150 valori, va in timeout "Request Entity Too Large" quando invece il listino è molto grande.

    Pensavo allora di "spezzare" la query (una semplice insert in una sola tabella) in tante sottoquery per aggirare il limite del server.

    codice:
    foreach($righe as $rows)          
     {
    $carattere= "^";
    $string=explode($carattere, $rows);
    $sql= "INSERT INTO prodotti (product_sku, product_name, product_s_desc, product_price)
                  VALUES ('$string[0]','$string[1]','$string[2]','$string[3]')";
                 $invia = mysql_query($sql, $cn);}
    chiaramene ho semplificato un pò la query che in realtà contiene 25 campi.

    Domanda: dal momento che so che posso inserire al massimo 150 righe per non andare in timeout, è possibile inserire in una volta tutto il listino a spezzoni di 150 prodotti per volta? E se si, come?

    Chiedo scusa se non son stato abbastanza chiaro e ringrazio anticipatamente chi vorrà aiutarmi.

  2. #2
    Dal manuale:
    INSERT statements that use VALUES syntax can insert multiple rows. To do this, include multiple lists of column values, each enclosed within parentheses and separated by commas. Example:
    codice:
    INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
    ... cmq aspetta pareri + autorevoli (piero.mac... dove sei... questa cosa mi interessa...)

  3. #3
    Esiste LOAD DATA [LOCAL] INFILE.....

    http://dev.mysql.com/doc/refman/5.0/en/load-data.html

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69
    Ad essere sincero non conoscevo questa funzione per inserire i record nel db direttamente dal file, tuttavia avevo già provato a creare un file.txt contenente il csv pulito per darlo successivamente in pasto al database. Il problema però è sempre lo stesso. Anche nella creazione del file di testo e addirittura se provo immediatamente a stampare la variabile $_POST['oggetto'] viene fuori il timeout del server.

  5. #5
    Originariamente inviato da liberlux
    Ad essere sincero non conoscevo questa funzione per inserire i record nel db direttamente dal file, tuttavia avevo già provato a creare un file.txt contenente il csv pulito per darlo successivamente in pasto al database. Il problema però è sempre lo stesso. Anche nella creazione del file di testo e addirittura se provo immediatamente a stampare la variabile $_POST['oggetto'] viene fuori il timeout del server.
    ma quanto è grande sto file????

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69
    il file csv contiene un 15 prodotti ed è sui 16 MB

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.