Oppure

Loading
21/11/12 19:18
ampeg
non ho capito la logica, comunque per velocizzare puoi scrivere i dati su un file di testo anziché direttamente nel db, l'operazione dovrebbe essere decisamente più veloce... e poi importare il file di testo nel DB

il file di testo avrà il seguente formato: i campi separati dalla virgola, le righe separate dal vbNewLine

una cosa di questo tipo (va incluso anche il nome dei campi come prima riga):

ID,C1,C2,C3,C4
1,20,30,15,12
2,45,25,50,35
3,51,21,60,50

dopo di che con il seguente codice importi il file


    Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\database.mdb")
    Dim cmd As New OleDbCommand("INSERT INTO tab1 SELECT * FROM [Text;FMT=Delimited;HDR=Yes;CharacterSet=850;DATABASE=D:\].nomefile.txt;", cn)

    cn.Open()
    cmd.ExecuteNonQuery()
    cn.Close()



nell connection string dove c'è Data Source = .. metti il percorso + nome del tuo db
nella query al posto di D:\].nomefile.txt" metti il percorso e il nome del file da importare nel db
aaa
21/11/12 19:22
piter123
intanto grazie, domani provo e poi ti faccio sapere.
aaa
21/11/12 19:40
Postato originariamente da piter123:

intanto grazie, domani provo e poi ti faccio sapere.


Prova anche a fare *una sola DELETE*, tre UPDATE e tre INSERT e vedi
26/11/12 6:15
piter123
ciao, si scusa, i delete erano cmq solo 3, sbagliato io nel ricopiare il codice. anche gli update e gli insert sono tre, però per quel che riguarda gli update degli id ovviamente sono 4997.

Ho provato anche la soluzione del txt che sembra più veloce ma se devo usate i txt tanto vale che usi solo quelli come facevo prima.

La cosa più pratica alla fine è quella di ribaltare la mia matrice e quindi aggiungere solamente i record in coda al database, i fase di lettura partirò dall'ultimo record e a ritroso per i 5000 precedenti.


Un ringraziamento ovviamente per l'attenzione datami, grazie
Ultima modifica effettuata da piter123 26/11/12 6:16
aaa