Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    unica Insert per record multipli ASP e access

    salve
    ho uno creato uno script che legge da un file di testo e per ogni riga inserisce in un db access, il problema è che effetuerei in questo modo troppe query in brevissimo tempo, utilizzando una grossa quantità di risorse del server.
    esiste un modo per effettuare un'unica insert per più record??

    eccolo lo script:

    ilfile=server.mappath("/prova.txt")

    Set file = CreateObject("Scripting.FileSystemObject")
    Set ilfile = file.OpenTextFile(ilfile, 1, False)

    counter=0
    do while not ilfile.AtEndOfStream
    counter=counter+1
    illine=ilfile.readline

    fornitore = mid(illine, 001, 14)
    cod_art_fornitore = mid(illine, 017, 12)
    descrizione = mid(illine, 031, 49)
    produttore = mid(illine, 082, 11)
    p_listino = mid(illine, 095, 9)
    p_esp = mid(illine, 106, 9)
    p_netto = mid(illine, 117, 9)
    disp_magazzino = mid(illine, 128, 10)
    disp_futura = mid(illine, 140, 10)
    cod_reparto = mid(illine, 152, 2)
    nome_reparto = mid(illine, 156, 19)
    cod_famiglia = mid(illine, 177, 2)
    nome_famiglia = mid(illine, 181, 19)
    cod_sottofamiglia = mid(illine, 202, 2)
    nome_sottofamiglia = mid(illine, 206, 19)
    inizio_promozione = mid(illine, 265, 9)
    fine_promozione = mid(illine, 276, 9)

    guadagno = cdbl(p_esp) - cdbl(p_netto)
    sconto = (cdbl(guadagno)/100)*15
    prezzo_itf = cdbl(p_esp) - cdbl(sconto)
    prezzo_itf = formatnumber(prezzo_itf, 2)

    'controllo eventuale esistenza del prodotto
    CONTROLLO = "Select count(*) as Conteggio from prodotti where cod_art_fornitore='"&cod_art_fornitore&"'"
    Set res=conn.Execute(CONTROLLO)
    numRecord=res.Fields("Conteggio")
    res.Close
    Set res=Nothing

    if numRecord < 1 then 'inserisco il prodotto
    SQL="Insert into prodotti (fornitore, cod_art_fornitore, descrizione, produttore, p_listino, p_esp, p_netto, disp_magazzino, disp_futura, cod_reparto, nome_reparto, cod_famiglia, nome_famiglia, cod_sottofamiglia, nome_sottofamiglia, inizio_promozione, fine_promozione, prezzo_itf)values('"&fornitore&"','"&cod_art_forni tore&"','"&descrizione&"','"&produttore&"','"&p_li stino&"','" &p_esp&"','"&p_netto&"','"&disp_magazzino&"','"&di sp_futura&"','"&cod_reparto&"','"&nome_reparto&"', '"&cod_famiglia&"','"&nome_famiglia&"','"&cod_sott ofamiglia&"','"&nome_sottofamiglia&"','"&inizio_pr omozione&"','"&fine_promozione&"','"&prezzo_itf&"' )"

    end if

    conn.execute(SQL)

    loop

  2. #2

  3. #3
    sono 50000 e devo eseguire la query una volta al giorno

  4. #4
    io mi preoccuperei più del fatto che fai almeno 50000 select e 50000 insert al giorno in un db access - che li gestisce tranquillamente, ma rischia di corrompersi per il numero di transazione. fossi in te passerei a qualcos'altro

  5. #5
    purtroppo al momento non posso passare ad altro...posso cmq evitarmi le 50000 select, pulendo interamente la tabella ed inserendo tutto da zero... rimane però il problema delle 50000 insert che mi fanno andare in timeout lo script oltre al fatto che il mio fornitore di hosting viene a cercarmi a casa con un fucile perchè uso troppe risorse :-)

  6. #6
    allora fatti il lavoro in locale, poi monti il db via ftp...

  7. #7
    quindi una soluzione non esiste?? vabbe farò come mi hai consigliato tu.. ci lavoro in locale

  8. #8
    non si può fare qualcosa con TSQL? ho trovato alcuni esempi su google ma non sono chiari...

  9. #9
    sempre 50000 records sono, sempre access usi...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.