none
SqlBulkCopy usando ASP.NET Core RRS feed

  • Pregunta

  • Buenas tardes a todos!, sinceramente busque bastante en este foro y otros pero no encuentro lo que necesito hacer. Les paso a explicar: Necesito importar un archivo CSV a mi web app y actualizar los datos de una tabla específica dentro de mi base de datos.

    Anteriormente logre hacerlo funcionar pero en un entorno de webforms, asp.net, y visual studio 2015.

    Ahora estoy usando es asp.net core 2.0 y MVC (tengo entendido que si soporta ahora SqlBulk) pero no se como hacerlo funcionar. No probé nada ya que sinceramente no logró entender.

    Encontre mucho de como subir una imagen a una carpeta del servidor, pero es una parte de lo que necesito. Me faltaría la otra parte de como actualizar mi tabla en la base de datos.

    El archivo de CSV tiene 3 columnas: DNI(int), Fecha Pago(datetime), Cancelo(bool)

    Si alguno me puede ayudar o dejarme algo para que pueda seguir leyendo, se los agredecería.

    Saludos.

    martes, 6 de febrero de 2018 21:31

Respuestas

  • abre un sql command como si fueses a hacer cualquier operación, y luego ejecuta el comando que ves abajo (obtenido de un ejemplo de stackoverflow para no teclear). Tienes que modificar la ruta, y tienes que pensar que esa ruta es desde donde se esté ejecutando el servidor sql, es decir, si son servidores distintos el server web y el server sql tendrás que usar una ruta unc del tipo \\servidorweb\ruta y asegurarte que esa ruta es accesible para el usuario que levanta los servicios de sql. Una vez que hayas hecho eso este comando debería ser más que suficiente.

    BULK INSERT SchoolsTemp
       
    FROM 'C:\CSVData\Schools.csv'
       
    WITH
       
    (
        FIRSTROW
    = 2,
        FIELDTERMINATOR
    = ',',  --CSV field delimiter
        ROWTERMINATOR
    = '\n',   --Use to shift the control to next row
        ERRORFILE
    = 'C:\CSVDATA\SchoolsErrorRows.csv',
        TABLOCK
       
    )


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    miércoles, 7 de febrero de 2018 7:37
    Moderador
  • Ya lo solucioné. No en la misma web app, sino que cree otro proyecto con web forms y ahí pude usar el SQLBulk con la conexión a la base de datos que uso.

    Creo una tabla temporal que después copio esos datos a la tabla destino. Desde borro la tabla temporal.

    Saludos!

    • Marcado como respuesta gw_lapida viernes, 9 de febrero de 2018 16:50
    viernes, 9 de febrero de 2018 16:50

Todas las respuestas

  • abre un sql command como si fueses a hacer cualquier operación, y luego ejecuta el comando que ves abajo (obtenido de un ejemplo de stackoverflow para no teclear). Tienes que modificar la ruta, y tienes que pensar que esa ruta es desde donde se esté ejecutando el servidor sql, es decir, si son servidores distintos el server web y el server sql tendrás que usar una ruta unc del tipo \\servidorweb\ruta y asegurarte que esa ruta es accesible para el usuario que levanta los servicios de sql. Una vez que hayas hecho eso este comando debería ser más que suficiente.

    BULK INSERT SchoolsTemp
       
    FROM 'C:\CSVData\Schools.csv'
       
    WITH
       
    (
        FIRSTROW
    = 2,
        FIELDTERMINATOR
    = ',',  --CSV field delimiter
        ROWTERMINATOR
    = '\n',   --Use to shift the control to next row
        ERRORFILE
    = 'C:\CSVDATA\SchoolsErrorRows.csv',
        TABLOCK
       
    )


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    miércoles, 7 de febrero de 2018 7:37
    Moderador
  • Gracias por responder!, actualmente lo estoy haciendo de esta forma. Pero lo quiero hacer dentro de un VIEW de mi proyecto de web app.

    Ayer leia que tengo que instalar una librería (EEPlus) para que me lea este archivo de Excel. Hoy probaré esto para ver si puedo avanzar.

    miércoles, 7 de febrero de 2018 12:08
  • Ya lo solucioné. No en la misma web app, sino que cree otro proyecto con web forms y ahí pude usar el SQLBulk con la conexión a la base de datos que uso.

    Creo una tabla temporal que después copio esos datos a la tabla destino. Desde borro la tabla temporal.

    Saludos!

    • Marcado como respuesta gw_lapida viernes, 9 de febrero de 2018 16:50
    viernes, 9 de febrero de 2018 16:50