none
Insert Bulk sin Datatable solo Lista generica RRS feed

  • Pregunta

  • Buenas tardes

    Tengo el siguiente codigo

    using (SqlConnection sqlConnection = new SqlConnection(this.cadenaConexion))
                {
                    using (SqlCommand sqlCommand = sqlConnection.CreateCommand())
                    {
                        sqlConnection.Open();
                        foreach (var item in celularBXIs)
                        {
                            sqlCommand.Parameters.AddWithValue("@Sig", item.Sig);
                            sqlCommand.Parameters.AddWithValue("@telefono", item.Telefono);
                            sqlCommand.CommandText = @"Insert into CelularBXI2(Sic, Telefono)values(@sig, @telefono)";
                            sqlCommand.ExecuteNonQuery();
                        }
                    }
                }

    De esa forma inserto cada registro de mi lista celularBXIs, pero yo necesito hacr un bulk insert ya son mas de 150,000.00

    Como se logra esto sin usar un datable 

    De antemano muchas Gracias.

    lunes, 29 de abril de 2019 18:06

Todas las respuestas

  • Hola niqel

    Usa el datatable o define un procedimiento almacenado en la base de datos o genera algún objeto que vaya haciendo de objeto temporal para ir almacenando en Memoria los datos / o Escribelos en un archivo conforme los vayas leyendo y de ahí conforme los vayas utilizando los vas leyendo de vuelta; estas definiciones tendrían que ocurrir en una Clase de tu definición.

    Por cuestiones de manejo de memoria y lectura sobre un "buffer en memoria" el DataTable Class ya cumple con las definiciones que te menciono que serian necesarias ya que es serializable y el manejo de memoria ya está definido, no así con tu clase propia, o el procedimiento almacenado el cuál cargaría el manejo de memoria a al parte del SQL o backend, de acuerdo a las definiciones de la 3-tier architecture, te conviene si C# se ejecuta a nivel de vista o incluso en la capa de aplicación.

    https://stackoverflow.com/questions/1260952/how-to-execute-a-stored-procedure-within-c-sharp-program

    https://www.codeproject.com/tips/825532/read-insert-data-using-stored-procedures-in-csharp

    Usar el Bulk insert sería igual en la capa de SQL con un procedimiento almacenado con salida a un archivo .CSV

    https://docs.microsoft.com/es-es/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-2017

    En Microsoft no se imparten clases de POO así como tampoco se realiza revision de codigos personalizados busca un libro o sirvete de entrar a Microsoft Virtual Academy

    No dudes en ampliar más sobre este tema si es que aún lo requirieras o de abrir una nueva consulta en caso de tener alguna situación o necesitarla con algún otro de los productos de Microsoft.

     

    Adicional le invito a consultar los siguientes recursos:

    Guia para formular preguntas en el foro

    Channel 9 - donde puedes encontrar una sección de: C#

    Gracias por usar los foros de MSDN.

    Erick Rivera

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    • Editado eRiver1 martes, 30 de abril de 2019 19:10 Gramatica
    • Propuesto como respuesta Carlos_Ruiz_M martes, 21 de mayo de 2019 17:35
    martes, 30 de abril de 2019 19:03
  • Hola eRiver Gracias por el aporte. Si yo ce que un datatable hasta tiene el metodo bulk.

    Pero Justamente es lo que quiero evitar. Mi progunta cae sobre si utilizando Idatareader puedo hacer un insert Bulk No quiero utilizar datatable.

    • Propuesto como respuesta eRiver1 viernes, 26 de julio de 2019 15:55
    domingo, 12 de mayo de 2019 2:34
  • Hola 

    https://docs.microsoft.com/es-es/sql/relational-databases/import-export/import-bulk-data-by-using-bulk-insert-or-openrowset-bulk-sql-server?view=sql-server-2017

    Debido a que no hemos recibido alguna notificación que aún se esté presentando el problema que enuncia en vuestra consulta y que la respuesta provista provee un amplio panorama y campo de acción sobre tu duda; nos gustaría considerar la misma como resuelta debido a la respuesta apropiada proporcionada  y así proceder a calificar la misma como respuesta.

    No dudes en ampliar más sobre este tema si es que aún lo requirieras o de abrir una nueva consulta en caso de tener alguna situación o necesitarla con algún otro de los productos de Microsoft.

     

    Adicional le invito a consultar los siguientes recursos:

    Guía para formular preguntas en el foro

    Channel 9 - donde puedes encontrar una sección de: Desarrollo utilizando Visual Studio.

     

     

    Gracias por usar los foros de MSDN.

    Erick Rivera

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    viernes, 26 de julio de 2019 15:56