Ciao a tutti,
dopo aver cercato ovunque, dopo essermi letto un milione di post, ho deciso di scrivere qua, perchè magari qualcuno ha già affrontato il problema con successo.
Devo importare in una tabella mdb un file di testo che mi viene caricato sul server ogni 6 ore. Utilizzo con successo questo script, trovato tempo fa su un post.
ripeto: questo script funziona alla perfezione.codice:'**************************************************************************************** 'verifico l'esistenza del file gruppi Set FileObject=CreateObject("Scripting.FileSystemObject") esiste=FileObject.FileExists(sPath & "Gruppi.txt") Set FileObject=Nothing if esiste = True then sTableDb = "gruppi" sQuery = "DELETE * FROM " & sTableDb cn.Execute(sQuery) response.write sTableDb & " tabella svuotata " Set fso = CreateObject("Scripting.FileSystemObject") Set txt = fso.OpenTextFile(sPath & "gruppi.txt") Set cmd = CreateObject("ADODB.Command") With cmd .CommandText = "PARAMETERS pC1 Text, pC2 Text, pC3 Text, pC4 Text, pC5 Text; INSERT INTO "& sTableDb &" (CodGruppo, GruppoITA, GruppoDEU, GruppoENG, GruppoFRA) VALUES(pC1, pC2, pC3, pC4, pC5)" .CommandType = 1 Set .ActiveConnection = cn .Parameters.Refresh End With r = 0 With txt While not .AtEndOfStream r = r+1 aCampo = Split(txt.ReadLine(),"#") With cmd .Parameters("pC1").Value = aCampo(0) .Parameters("pC2").Value = aCampo(1) .Parameters("pC3").Value = aCampo(2) .Parameters("pC4").Value = aCampo(3) .Parameters("pC5").Value = aCampo(4) .Execute End With Wend .Close End With Set txt = Nothing Set fso = Nothing Set cmd = Nothing response.write "Il file "& sTableDb&" è stato acquisito (" & CStr(r) & " record) " else response.write "<h2>ATTENZIONE!!! il file "&sPath & "gruppi.txt non esiste</h2>" end if
Se lancio a mano il file asp che importa il file, lo script fa il suo dovere e sono felice.
Ovviamente però non posso lanciare a mano ogni 6 ore la pagina, ho fatto creare un batch sul server che lancia un browser con l'indirizzo della pagina (apre l'url, aspetta un po' e chiude il browser).
Funziona, però il file da importare con il tempo è diventato un po' grosso: siamo oltre i 84000 record e il batch sul server non aspetta che sia importato tutto, ma chiude e basta, spaccando il mio script.
Ora, ho fatto aumentare il lasso di tempo che chiude il browser e non da errori.
La domanda è: posso fare in modo che, anzichè eliminare tutti i record nel db prima di importare quelli nuovi, lo script vada ad eliminare e importare solo i record aggiornati?
E' fattibile? Se fosse un unico campo non ci sarebbero problemi, ma visto che sono più campi?
Grazie a tutti, anche solo per aver letto questo post.
Luca

Rispondi quotando
