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;
Deja un comentario