none
insertar datatable masivamente en access desde vb.net RRS feed

  • Pregunta

  • Se puede insertar un Datatable que contiene mas de 20,000 lineas masivamente  a una tabla de access... , me pueden orientar?

     

    • Cambiado Enrique M. Montejo jueves, 19 de julio de 2012 15:30 acceso a datos (De:Lenguaje VB.NET)
    martes, 20 de diciembre de 2011 23:43

Todas las respuestas

  • hola

    podrias definir un OleDbDataAdapter y usar el metodo Update()

    pero en tu caso definirias el InsertCommand

    de esta forma al invocar al update() el propio dataadapter ejecutara repetidas veces por cada registro el INSERT

    analiza los ejemplos de los link

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 21 de diciembre de 2011 1:30
  • Que tal leandro, gracias por la contestacion... fijate que el detalle que tengo mas que nada es que yo tengo este codigo...

     

     

    dt_3=datatable

    cnlocal.jrun= la conexion hacia el archivo de access

     

            For i = 0 To dt_3.Rows.Count - 1

                cnlocal.jRun("insert into tb_3 values(" & dt_3.Rows(i)("1") & ", '" & dt_3.Rows(i)("2") & "'," & dt_3.Rows(i)("3") & "," & dt_3.Rows(i)("4") & "," & dt_3.Rows(i)("5") & "," & dt_3.Rows(i)("6") & "," & dt_3.Rows(i)("7") & "," & dt_3.Rows(i)("8") & "," & dt_3.Rows(i)("9") & "," & dt_3.Rows(i)("10") & ")", "\tb_3.mdb", Application.StartupPath)

            Next

     

    este ejemplo me va alimentando la una base de Access, de un datatable, el cual contiene x cantidad de registros lo hace perfecto la cuestión es que es tardadado... me bronca es cuando tengo un datatable que contiene mas de 100,000 lineas de registros porque se tarda mas de 30 minutos en insertar todos los registros y tengo 4 casos así.

    estaba pensando en algo que me reduzca considerablemente el tiempo.

    crees que haya algo?

     

     


    Bukles...
    miércoles, 21 de diciembre de 2011 20:52
  • hola

    alli tienes un buen problema al no usar parametros, veo que concatenas en un string la query que ejecutas, y esto no esta bien, debes usar parametros

     

    no se muy bien que hara jRun() pero no veo que soporte parametros

     

    estaba pensando en algo que me reduzca considerablemente el tiempo. crees que haya algo?

    y milagros no hay, pero con el codigo que usas sin parametros seguro habra problemas

    ademas verifica si la opcion que menciono con el dataset u el DataAdapter no te rsulta util, analiza los ejemplso de los link como funcionan

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 21 de diciembre de 2011 21:48
  • Hola... mira el Jrun lo tengo como una clase... la anexo...

     

       Public Sub jRun(ByVal sentencia As String, ByVal bd As String, ByVal ruta As String)

            Dim dt As New DataTable

            Dim cmd As New OleDb.OleDbCommand

            Dim da As New OleDb.OleDbDataAdapter

            Dim cnn As New OleDb.OleDbConnection

     

            cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ruta & bd & ";Persist Security Info=False"

            cnn.Open()

            Try

                cmd.Connection = cnn

                cmd.CommandText = sentencia

                cmd.ExecuteNonQuery()

            Catch ex As Exception


            End Try


            cnn.Close()

        End Sub

     

    esta es la conexion... ahora no se si con esto me puedas orientar un poco mas...



    Bukles...
    jueves, 22 de diciembre de 2011 15:35