Ciao a tutti,
ho la necessità di esportare da un db access su un file csv parecchi record variabili da 100.000 al milione.
Ho scoperto il metodo getstring di ado che funziona molto bene, ma se ho troppi record mi esce l'errore Superato il limite del buffer delle risposte.
Non ho trovato modo di usare response.flush al suo interno.
Ho trovato questa query per esportare un numero specifico di record
codice:SELECT * FROM (SELECT TOP 50 tab2.* FROM (SELECT TOP 300 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC;
e nella mia procedura ho un ciclo che ad ogni passaggio mi genera queste query
codice:SELECT * FROM (SELECT TOP 10000 tab2.* FROM (SELECT TOP 10000 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC; SELECT * FROM (SELECT TOP 10000 tab2.* FROM (SELECT TOP 20000 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC; SELECT * FROM (SELECT TOP 10000 tab2.* FROM (SELECT TOP 30000 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC; SELECT * FROM (SELECT TOP 10000 tab2.* FROM (SELECT TOP 40000 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC; SELECT * FROM (SELECT TOP 10000 tab2.* FROM (SELECT TOP 50000 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC; SELECT * FROM (SELECT TOP 10000 tab2.* FROM (SELECT TOP 60000 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC; SELECT * FROM (SELECT TOP 10000 tab2.* FROM (SELECT TOP 70000 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC; SELECT * FROM (SELECT TOP 10000 tab2.* FROM (SELECT TOP 80000 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC; SELECT * FROM (SELECT TOP 10000 tab2.* FROM (SELECT TOP 90000 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC; SELECT * FROM (SELECT TOP 10000 tab2.* FROM (SELECT TOP 100000 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC; SELECT * FROM (SELECT TOP 10000 tab2.* FROM (SELECT TOP 110000 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC; SELECT * FROM (SELECT TOP 10000 tab2.* FROM (SELECT TOP 120000 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC; SELECT * FROM (SELECT TOP 3906 tab2.* FROM (SELECT TOP 123906 tab1.* FROM gest_arch AS tab1 ORDER BY coddoc ASC) AS tab2 ORDER BY coddoc DESC) ORDER BY coddoc ASC;
soltanto che non mi sembra molto ottimizzato come metodo, dato che sull'ultima query prendo tutti i record per poi prenderne soltanto 3906
Sapete se e' possibile usare la paginazione di ado ed esportare, sempre con getstring, una pagina per volta?
Non sono riuscito a capire come fare.
Avete altre idee?

					
					
					
						
  Rispondi quotando