Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Utente
    Registrato dal
    Dec 2005
    Messaggi
    197

    Importare grandi quantità di record nel DB MySQL

    Ho un problema durante l'importazione di dati da file di testo di grandi dimensioni (70 MB) nel mio db in MySQL
    L'errore che ottengo è molto generico "trappable error occurred in an external object"
    Ho notato che inserisce circa 40.000 record e poi si interrompe la procedura.
    Cosa mi consigliate di fare?
    Non sarebbe possibile fare in modo che la procedura legga da un determinato record ad un altro e successivamente legga dall'ultimo record ad altro record e via di seguito?
    Spero di essermi spiegato.

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Utente
    Registrato dal
    Dec 2005
    Messaggi
    197
    Per la precisione l'errore è il seguente:
    codice:
    Active Server Pages error 'ASP 0115'
    
    Unexpected error
    
    A trappable error (E06D7363) occurred in an external object. The script cannot continue running.

  3. #3

  4. #4
    Utente di HTML.it L'avatar di Utente
    Registrato dal
    Dec 2005
    Messaggi
    197
    Eccolo:
    codice:
    <%
     Dim conn, fs, objFile, objFileTextStream, i, strSQL, file
     Dim strLine, strLinePart, strValore1, strValore2, strValore3, strValore4, strValore5, strValore6, strValore7
    
    Set fs = Server.CreateObject("Scripting.FileSystemObject")
    
    file = server.mapPath("/public/testo.txt")
    
    Set objFile = fs.GetFile(file)
    
    Set objFileTextStream = objFile.OpenAsTextStream(1)
    
    Do While objFileTextStream.AtEndOfStream <> True
       strLine = objFileTextStream.ReadLine
       strLinePart = split(strLine,"|")
       for i = 0 TO UBound(strLinePart)
         If i = 0 Then
           strValore1 = Trim(strLinePart(i))
         ElseIf i = 1 Then
           strValore2 = Trim(strLinePart(i))
         ElseIf i = 2 Then
           strValore3 = Trim(strLinePart(i))
         ElseIf i = 3 Then
           strValore4 = Trim(strLinePart(i))
         ElseIF i = 4 Then
           strValore5 = Trim(strLinePart(i))
         ElseIF i = 5 then
           strValore6 = Trim(strLinePart(i))
         ElseIF i = 6 then
           strValore7 = Trim(strLinePart(i))
         End If
       Next
    
    
       strSQL = "INSERT INTO tabella (Valore1, Valore2, Valore3, Valore3, Valore4, Valore5, Valore6, Valore7) Values('"&strValore1&"', '"&strValore2&"', '"&strValore3&"', '"&strValore4&"','"&strValore5&"','"&strValore6&"','"&strValore7&"'"
    
       conn.Execute strSQL
     Loop
    
     objFileTextStream.Close
     Set objFileTextStream = Nothing
     Set fs = Nothing
    %>
    Grazie

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Come minimo manca una parentesi alla fine della SQL.

    Roby

  6. #6
    questo giro

    codice:
       for i = 0 TO UBound(strLinePart)
         If i = 0 Then
           strValore1 = Trim(strLinePart(i))
         ElseIf i = 1 Then
           strValore2 = Trim(strLinePart(i))
         ElseIf i = 2 Then
           strValore3 = Trim(strLinePart(i))
         ElseIf i = 3 Then
           strValore4 = Trim(strLinePart(i))
         ElseIF i = 4 Then
           strValore5 = Trim(strLinePart(i))
         ElseIF i = 5 then
           strValore6 = Trim(strLinePart(i))
         ElseIF i = 6 then
           strValore7 = Trim(strLinePart(i))
         End If
       Next
    mi pare inutile

    questo

    codice:
    strValore1 = Trim(strLinePart(0))
    strValore2 = Trim(strLinePart(1))
    strValore3 = Trim(strLinePart(2))
    strValore4 = Trim(strLinePart(3))
    strValore5 = Trim(strLinePart(4))
    strValore6 = Trim(strLinePart(5))
    strValore7 = Trim(strLinePart(6))
    dovrebbe essere sufficiente

  7. #7
    Utente di HTML.it L'avatar di Utente
    Registrato dal
    Dec 2005
    Messaggi
    197
    Originariamente inviato da Roby_72
    Come minimo manca una parentesi alla fine della SQL.

    Roby
    Hai ragione ma è solo una dimenticanza nel copia incolla, lo script funziona perfettamente il problema che ho riportato sopra si verifica solo con più di 40.000 record da importare

    Originariamente inviato da optime

    questo

    codice:
    strValore1 = Trim(strLinePart(0))
    strValore2 = Trim(strLinePart(1))
    strValore3 = Trim(strLinePart(2))
    strValore4 = Trim(strLinePart(3))
    strValore5 = Trim(strLinePart(4))
    strValore6 = Trim(strLinePart(5))
    strValore7 = Trim(strLinePart(6))
    dovrebbe essere sufficiente
    Proverò a semplificare, grazie ti faccio sapere.

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Augurati di non scoprire alla fine che la riga 40.001 contiene un apice...
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    Utente di HTML.it L'avatar di Utente
    Registrato dal
    Dec 2005
    Messaggi
    197
    Purtroppo il problema permane

    Ho risolto comunque così.

    Il file che devo caricare ha una dimensione di circa 70MB, tenuto conto che con file di 40 mb la procedura funziona perfettamente, ho scaricato in locale il file da 70MB, l'ho diviso in due, ho ricaricato sul server i due file e caricato i dati con la procedura di cui sopra.

    Purtroppo però tutte queste operazioni di download ed upload impiegano troppo tempo ed allora ho cercato una procedura per dividere il file da 70MB direttamente sul server ma non ho trovato nulla...come potrei fare?

    Grazie

  10. #10
    Utente di HTML.it L'avatar di Utente
    Registrato dal
    Dec 2005
    Messaggi
    197
    up

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.