PDA

Visualizza la versione completa : Creare file excel da db mysql di grandi dimensioni


djjunior
20-01-2020, 14:34
Ciao a tutti,
ho uno script che mi crea un file excel di alcuni dati presenti su db mysql, ora quando vado ad esportare circa 35mila righe di una tabella, il browser elabora, processando la pagina che crea l'excel, ma anche dopo tanto tempo non riesce a farmi l'excel sono costretto ad uscire e rientrare da browser per l'utilizzo sicuramente delle risorse per la mole di dati da elaborare.
Potete consigliarmi un alternativa? Come posso exportare in excel tramite asp una mole di cosė tanti dati etc?
Grazie

optime
20-01-2020, 16:04
35k righe non sono tantissime. puoi spiegare il giro, magari col codice? grazie

djjunior
20-01-2020, 16:55
Grazie OPTIME,
da premettere che la select dei campi č molto pių lunga, qui l'ho ridotta per esempio.
ecco il codice:


Set rs = conn.Execute("SELECT Codice_Bip, nome, cognome, ragione_sociale, tipo_reg, partiva, indirizzo, cap, citta, provincia, telefono, telefonoufficio, email, professione, altro, newsletter, attiva, privacy FROM utenti")
for i = 0 to rs.Fields.Count-1

if rs.fields(i).Name = "Codice_BIP" then

risultato = risultato & "Codice Cliente</td><td>"

else

risultato = risultato & rs.Fields(i).Name & "</td><td>"

end if

next
risultato = risultato & "</td></tr><tr><td>"
risultato = risultato & rs.GetString(,,"</td><td style=mso-number-format:'\@';>","</td></tr><tr><td>", "-")

rs.Close
set rs = Nothing
conn.Close
set conn = Nothing

Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "content-disposition", "inline; filename=export_utenti_it_" & Time() & "-" & Now() & ".xls"

Response.Write ("<table border=1 ><tr><td>" & risultato & "</td></tr></table>")

optime
20-01-2020, 17:49
devi capire quale parte č lenta

io metterei dei log
- dopo l'execute della select
- al temine della costruzione di risultato (prima di rs.close)
- dopo l'ultima response.write

cosė dai tempi capisci dove sta il collo di bottiglia

djjunior
20-01-2020, 17:58
mi puoi suggerire qualche log da inserire?

djjunior
20-01-2020, 18:25
Comunque ho effettuato controllo tempi di esecuzione
la parte "lenta" č questa che blocca tutto.


for i = 0 to rs.Fields.Count-1

if rs.fields(i).Name = "Codice_BIP" then

risultato = risultato & "Codice Cliente</td><td>"

else

risultato = risultato & rs.Fields(i).Name & "</td><td>"

end if

next
risultato = risultato & "</td></tr><tr><td>"
risultato = risultato & rs.GetString(,,"</td><td style=mso-number-format:'\@';>","</td></tr><tr><td>", "-")


Come posso ovviare?

djjunior
21-01-2020, 10:52
Nessun aiuto?

Loading