Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: eddy16391 - Dicembre 10, 2018, 05:14:35 pm

Titolo: Problema di memoria con TCVSExporter
Inserito da: eddy16391 - Dicembre 10, 2018, 05:14:35 pm
Ciao a tutti,
sto utilizzando il componente TCVSExporter per esportare quello che mi viene presentato in una query in un file CSV, il problema è che essendo quasi 500k righe l'applicazione va in errore perchè viene esaurita la memoria RAM.
Esiste un componente più smart per fare l'export in CSV?
Grazie mille!!
Titolo: Re:Problema di memoria con TCVSExporter
Inserito da: nomorelogic - Dicembre 10, 2018, 05:47:55 pm
essendo tutte quelle righe forse l'approccio migliore è di loopare su un dataset (meglio se unidirezionale) e poi generare il record CSV con la Format

Titolo: Re:Problema di memoria con TCVSExporter
Inserito da: eddy16391 - Dicembre 10, 2018, 05:53:55 pm
Ma quindi intendi andare a leggere riga per riga e scrivere "a mano" il file CSV?
Titolo: Re:Problema di memoria con TCVSExporter
Inserito da: nomorelogic - Dicembre 10, 2018, 06:33:47 pm
si, diciamo che la soluzione più artigianale ma più performante

in alternativa puoi provare con fpspreadsheet che vanno alla grande
http://wiki.freepascal.org/FPSpreadsheet#Reading_and_writing_of_CSV_files (http://wiki.freepascal.org/FPSpreadsheet#Reading_and_writing_of_CSV_files)
Titolo: Re:Problema di memoria con TCVSExporter
Inserito da: eddy16391 - Dicembre 11, 2018, 09:39:42 am
Ok, grazie. Provo la soluzione "artigianale" poi se non dovessi riuscire provo l'altro plugin, anche se non riesco a capire come funziona. Non è che conosci qualche tutorial che spiega come utilizzarlo?
Grazie ancora!!
Titolo: Re:Problema di memoria con TCVSExporter
Inserito da: nomorelogic - Dicembre 11, 2018, 02:18:25 pm
il codice di esempio è nella stessa pagina, cerca
Converting a large database table to a spreadsheet using virtual mode

Edit:
Leggi prima "Virtual mode", è proprio il tuo caso
Titolo: Re:Problema di memoria con TCVSExporter
Inserito da: eddy16391 - Dicembre 12, 2018, 11:08:44 am
Grazie per le dritte, alla fine ho risolto con il metodo "artigianale". :-D