INSERT, UPDATE de CSV a base de datos SQL

Esta entrada muestra cómo insertar o actualizar datos desde un archivo CSV (generado con excel, por ejemplo) a una tabla de una base de datos SQL.

En este ejemplo, he añadido un bloque BEGIN TRY ….. END TRY BEGIN CATCH ……. END CATCH para evitar el error que se genera cuando la tabla ya existe.

BEGIN TRY
CREATE TABLE #tmp
(
   codigo nvarchar(30),
   observaciones nvarchar(250)
);
END TRY
BEGIN CATCH
END CATCH

Para introducir los datos de nuestro archivo CSV en la tabla temporal local (#tmp) que acabamos de crear utilizaremos la instrucción BULK INSERT. Cabe destacar el parámetro FIELDTERMINATOR que sirve para indicar cuál es el carácter separador de los campos utilizado en el CSV, en el caso del ejemplo es el punto y coma «;».

IMPORTANTE: La ruta del fichero debe ser la del servidor donde corre la base de datos, no la del ordenador cliente que lo ejecuta, siempre y cuando no estemos ejecutando el código en el mismo servidor.

BULK INSERT #tmp  
FROM 'C:\articulos.csv'  
WITH  
( 
    DATAFILETYPE = 'char',  
    FIELDTERMINATOR = ';'  
);

Finalmente, sólo queda hacer la instrucción INSERT o UPDATE necesaria para pasar los datos de la tabla temporal local (#tmp) que hemos creado y hemos cumplimentado con los datos del CSV en la tabla de la base de datos de destino.

UPDATE ARTICULOS
SET observaciones_articulo = i.observaciones 
FROM (
    SELECT codigo,observaciones
    FROM #tmp) i
    where articulos.codigo_articulo = i.codigo;
INSERT, UPDATE de CSV a base de datos SQL Clic para tuitear
No votes yet.
Please wait...

Deja un comentario

marchurtos
A %d blogueros les gusta esto: